diff --git a/ABOUT-NLS b/ABOUT-NLS deleted file mode 100644 index 2f50c66..0000000 --- a/ABOUT-NLS +++ /dev/null @@ -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. - diff --git a/AUTHORS b/AUTHORS index e822cb9..7c20a8d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,11 +1,21 @@ Main tinc authors: -Guus Sliepen -Ivo Timmermans (inactive) +- Guus Sliepen +- Ivo Timmermans (inactive) + +Significant contributions from: +- Michael Tokarev +- Florian Forster +- Grzegorz Dymarek +- Max Rijevski +- Scott Lamb These files are from other sources: * lib/pidfile.h and lib/pidfile.c are by Martin Schulze, taken from the syslog 1.3 sources. +* src/bsd/tunemu.c and tunemu.h are by Friedrich Schöller + + Also some of the macro files in the directory m4, and their accompanying files in lib, were taken from GNU fileutils. diff --git a/COPYING b/COPYING index 94a9ed0..2ecad8d 100644 --- a/COPYING +++ b/COPYING @@ -1,674 +1,289 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 +Copyright (C) 1998-2009 Ivo Timmermans, Guus Sliepen and others. +See the AUTHORS file for a complete list. - Copyright (C) 2007 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 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 of this license document, but changing it is not allowed. - Preamble + Preamble - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -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 + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you 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 -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +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 -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. 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 -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +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 -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -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. + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -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 -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 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 + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +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, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + 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 + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + 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 + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to this License. - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -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 + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +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 -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +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 -the GNU General Public License from time to time. Such new versions will + 8. If the distribution and/or use of the Program is restricted in +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 address new problems or concerns. - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +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 -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. + NO WARRANTY - 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 -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. + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. - 16. Limitation of Liability. - - 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. - - - Copyright (C) - - 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 . - -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: - - Copyright (C) - 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 -. - - 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 -. + END OF TERMS AND CONDITIONS diff --git a/COPYING.README b/COPYING.README index 26b4b1d..efeb98c 100644 --- a/COPYING.README +++ b/COPYING.README @@ -7,8 +7,11 @@ of the GPL are met. The following applies to the LZO library: -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://www.openssl.org). + 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://www.openssl.org). -Markus F.X.J. Oberhumer + 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. diff --git a/ChangeLog b/ChangeLog index a14b05e..d906b29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6595 +1,9222 @@ ------------------------------------------------------------------------- -r1600 | guus | 2008-12-24 00:14:37 +0100 (wo, 24 dec 2008) | 3 lines +commit 8c267d3d558ac97a4ce7381a37abb6cc4b46b133 +Author: Guus Sliepen +Date: Sun Oct 18 16:45:13 2009 +0200 + + Releasing 1.0.10. + +commit 3849de9a331ad132ed9d01c9f0cac47196624b3e +Author: Guus Sliepen +Date: Sun Oct 18 16:44:32 2009 +0200 + + Fix description of the WEIGHT environment variable. + +commit 87364c16564c897b1a2d306615804d68ea5a9ba1 +Author: Guus Sliepen +Date: Sun Oct 18 14:22:20 2009 +0200 + + Include missing header. + +commit c7fdc7d5b8d728c744b13a823e7eef9d2432c61e +Author: Guus Sliepen +Date: Mon Oct 12 23:51:57 2009 +0200 + + Remove debugging message when reading packets from a BSD device. + + This was inadvertently introduced by commit + 4a5d42178cc0954efba8b24058da9c70cc77c35a. + +commit ec4c8bcb18c1f463cf4544126e027fc8ec9b3a39 +Author: Guus Sliepen +Date: Mon Oct 12 22:14:47 2009 +0200 + + Allow the cloning /dev/tap interface to be used on FreeBSD and NetBSD. + + This device works like /dev/tun on Linux, automatically creating a new tap + interface when a program opens it. We now pass the actual name of the newly + created interface in $INTERFACE. + +commit 92b8abc921dd15b710f67335562210eb713fbb39 +Author: Guus Sliepen +Date: Sun Oct 11 18:57:58 2009 +0200 + + Use MTU probes to regularly ping other nodes over UDP. + + This keeps NAT mappings for UDP alive, and will also detect when a node is not + reachable via UDP anymore or if the path MTU is decreasing. Tinc will fall back + to TCP if the node has become unreachable. + + If UDP communication is impossible, we stop sending probes, but we retry if it + changes its keys. + + We also decouple the UDP and TCP ping mechanisms completely, to ensure tinc + properly detects failure of either method. + +commit 927064e5fd0ebf29a7ea768a7f9c4226da626a72 +Author: Guus Sliepen +Date: Sun Oct 11 15:46:52 2009 +0200 + + Small updates to the documentation. + + Mention that TCPOnly is not necessary anymore since tinc will autodetect + whether it can send via UDP or not. Also mention the WEIGHT environment + variable and the new default value (2048 bits) of RSA keys. + +commit 2c30af6c90926340a89748c63cc453b1c0b5a589 +Author: Guus Sliepen +Date: Sun Oct 11 14:20:14 2009 +0200 + + Ensure that the texinfo manual can be converted to HTML. + + The top node was made conditional with the @iftex command, since it should not + appear in PostScript and PDF output. However, it is still necessary for + texi2html, so we have to use @ifnottex instead. + + Texi2html also complains about the use of @cindex in the copyright statement, + so we remove that. + +commit a4f132770dc136d456c67b01d209e73f5f4d7a65 +Author: Guus Sliepen +Date: Sun Oct 11 13:56:04 2009 +0200 + + Revert "Raise default crypto algorithms to AES256 and SHA256." + + Although it would be better to have the new defaults, only the most recent + releases of most of the platforms supported by tinc come with a version of + OpenSSL that supports SHA256. To ensure people can compile tinc and that nodes + can interact with each other, we revert the default back to Blowfish and SHA1. + + This reverts commit 4bb3793e38b7c7f24dd308801e7f6dbb02cf02d2. + +commit 2762509be179dcb21d855f3d6f90d3ee686e3910 +Author: Guus Sliepen +Date: Sun Oct 11 13:54:05 2009 +0200 + + Remove code duplication when checking ADD_EDGE/DEL_EDGE messages. + +commit 5cddf5e52aeb20e50c887356ad23aec354e04151 +Author: Guus Sliepen +Date: Sun Oct 11 13:51:10 2009 +0200 + + Don't disconnect clients in TunnelServer mode who send unauthorised ADD_SUBNETs. + + So that we are liberal in what we accept. + +commit 430c90412c521c534113b3c4e5fc883e9b7ecff0 +Author: Borg +Date: Sat Oct 3 13:06:00 2009 +0200 + + Removed last gettext function. + +commit 3282375f4d64d9402141ac4bf142629ec2e1cd53 +Author: Guus Sliepen +Date: Tue Sep 29 16:25:20 2009 +0200 + + Remove autogenerated files from EXTRA_DIST. + + Apparently they were once necessary, but autoconf now includes them + automatically. Some of them are not used anymore, and this caused make dist to + fail. + +commit 9a2b0f88a9cae753ebc81c939d01403178b18a35 +Author: Guus Sliepen +Date: Sat Sep 26 12:51:52 2009 +0200 + + Update the NEWS. + +commit 46e481dc945c5572eb6091a3660f6bf258ee0cfa +Author: Guus Sliepen +Date: Fri Sep 25 21:14:56 2009 +0200 + + Add more authors to the copyright headers. + + Git's log and blame tools were used to find out which files had significant + contributions from authors who sent in patches that were applied before we used + git. + +commit 4c85542894f7fca823b119b05e07179deb24229a +Author: Guus Sliepen +Date: Fri Sep 25 00:54:07 2009 +0200 + + Drop support for localisation. + + Localised messages don't make much sense for a daemon, and there is only the + Dutch translation which costs time to maintain. + +commit a227843b739d279b63adcf3736ebb03d856080c4 +Author: Guus Sliepen +Date: Fri Sep 25 00:33:04 2009 +0200 + + Remove checkpoint tracing. + + This feature is not necessary anymore since we have tools like valgrind today + that can catch stack overflow errors before they make a backtrace in gdb + impossible. + +commit 5dde6461a321ee47b06e33f8203f2acf00a31a51 +Author: Guus Sliepen +Date: Fri Sep 25 00:14:03 2009 +0200 + + K&R style braces. + + This is essentially commit f02d3ed3e135b5326003e7f69f8331ff6a3cc219 from the + 1.1 branch, making it easier to merge between master and 1.1. + +commit ab7c61b06f6c6e991225f2fcc32d02b8e1084aee +Author: Guus Sliepen +Date: Fri Sep 25 00:01:00 2009 +0200 + + Update the address of the Free Software Foundation in all copyright headers. + +commit 0e6856b1379e278aa5ed116d0911851339a6064c +Author: Guus Sliepen +Date: Thu Sep 24 23:42:30 2009 +0200 + + Remove Ivo's old email addresses. + +commit c217d214f4f071c235bc7c463a1da6124e2570a6 +Author: Guus Sliepen +Date: Thu Sep 24 23:39:16 2009 +0200 + + Remove all occurences of $Id$. + +commit c23fcf555ee4b69f03b76a0ffb731c3a475a77e7 +Author: Guus Sliepen +Date: Thu Sep 24 23:29:46 2009 +0200 + + Update copyright information. + + - Update year numbers in copyright headers. + - Add copyright information for Michael Tokarev and Florian Forster to the + copyright headers of files to which they have contributed significantly. + - Mention Michael and Florian in AUTHORS. + - Mention that tinc is GPLv3 or later if compiled with the --enable-tunemu + flag. + +commit b5ccce296848aab72d574ca3de14af5fdf3efa4d +Author: Guus Sliepen +Date: Tue Sep 15 23:22:13 2009 +0200 + + Send large packets we cannot handle properly via TCP. + + During the path MTU discovery phase, we might not know the maximum MTU yet, but + we do know a safe minimum. If we encounter a packet that is larger than that + the minimum, we now send it via TCP instead to ensure it arrives. We also + allow large packets that we cannot fragment or create ICMP replies for to be + sent via TCP. + +commit d273efb177738d429e3cef7d8db8ee5cc8dcada7 +Author: Guus Sliepen +Date: Tue Sep 15 23:04:52 2009 +0200 + + Raise default RSA key length to 2048 bits. + +commit b47c17bcdeb70b63ad9346dc97ba575597cbd803 +Author: Guus Sliepen +Date: Tue Sep 15 22:59:01 2009 +0200 + + Use a mutex to allow the TAP reader to process packets faster on Windows. + + The TAP-Win32 device is not a socket, and select() under Windows only works + with sockets. Tinc used a separate thread to read from the TAP-Win32 device, + and passed this via a local socket to the main thread which could then select() + from it. We now use a global mutex, which is only unlocked when the main thread + is waiting for select(), to allow the TAP reader thread to process packets + directly. + +commit 802a50ffcd5f39bfc6424ac841de4e41154092fc +Author: Guus Sliepen +Date: Tue Sep 15 22:58:16 2009 +0200 + + Remove extra {. + +commit 4bb3793e38b7c7f24dd308801e7f6dbb02cf02d2 +Author: Guus Sliepen +Date: Tue Sep 15 12:08:05 2009 +0200 + + Raise default crypto algorithms to AES256 and SHA256. + + In light of the recent improvements of attacks on SHA1, the default hash + algorithm in tinc is now SHA256. At the same time, the default symmetric + encryption algorithm has been changed to AES256. + +commit 633c0cf1b067d118d5453bc8522fab65ffc82d2c +Author: Guus Sliepen +Date: Tue Sep 15 00:36:07 2009 +0200 + + Use access() instead of stat() for checking whether scripts exist. + +commit 6f1e0ece4e61f30612ed84ca4640635a02892cc8 +Author: Guus Sliepen +Date: Tue Sep 15 00:28:20 2009 +0200 + + Remove dropin random() function, as it is not used anymore. + +commit fa9bedd47cf8c143e801889c78f0a0979ac4d2fc +Author: Guus Sliepen +Date: Tue Sep 15 00:24:31 2009 +0200 + + Allow compiling for Windows XP and higher. + + This allows us to use getaddrinfo(), getnameinfo() and related functions, which + allow tinc to make connections over existing IPv6 networks. These functions are + not available on Windows 2000 however. By default, support is enabled, but when + compiling for Windows 2000 the configure switch --with-windows2000 should be + used. + + Since getaddrinfo() et al. are not functions but macros on Windows, we have to + use AC_CHECK_DECLS() instead of AC_CHECK_FUNCS() in configure.in. + +commit f80bf14f28925df6eaa56f3ed77adaf418ab9890 +Author: Guus Sliepen +Date: Mon Sep 14 23:28:28 2009 +0200 + + Also do not use drand48(), it is not available on Windows. + +commit 35e87b903e08fc51975a8cc97f06251d5153a424 +Author: Guus Sliepen +Date: Mon Sep 14 23:06:00 2009 +0200 + + Use only rand(), not random(). + + We used both rand() and random() in our code. Since it returns an int, we have + to use %x in our format strings instead of %lx. This fixes a crash under + Windows when cross-compiling tinc with a recent version of MinGW. + +commit 75773efe2689d347a2f219c5f27e4a82eef1236b +Author: Guus Sliepen +Date: Sun Sep 13 14:08:59 2009 +0200 + + Apparently it's impolite to ask GCC to subtract two pointers. + + If two pointers do not belong to the same array, pointer subtraction gives + nonsensical results, depending on the level of optimisation and the + architecture one is compiling for. It is apparently not just subtracting the + pointer values and dividing by the size of the object, but uses some kind of + higher magic not intended for mere mortals. GCC will not warn about this at + all. Casting to void * is also a no-no, because then GCC does warn that strict + aliasing rules are being broken. The only safe way to query the ordering of two + pointers is to use the (in)equality operators. + + The unsafe implementation of connection_compare() has probably caused the "old + connection_t for ... still lingering" messages. Our implementation of AVL trees + is augmented with a doubly linked list, which is normally what is traversed. + Only when deleting an old connection the tree itself is traversed. + +commit 23e151aeed6b3ffe0fab10f51ffdb134deb7a852 +Author: Guus Sliepen +Date: Sun Sep 13 14:07:40 2009 +0200 + + Remove superfluous call to avl_delete(). + +commit 9915f2abbedb7f1aa2b9e2f81d52ddcfca60e82d +Author: Guus Sliepen +Date: Sat Sep 12 14:19:36 2009 +0200 + + Handle unicast packets larger than PMTU in switch mode. + + If PMTUDiscovery is enabled, and we see a unicast packet that is larger than + the path MTU in switch mode, treat it just like we would do in router mode. + +commit 7242868b64f9d6f62b6c5bbf1526eb632ed9a4d6 +Author: Guus Sliepen +Date: Sat Sep 12 13:40:32 2009 +0200 + + Allow PMTUDiscovery in switch and hub modes again. + + PMTUDiscovery was disabled in commit d5b56bbba56480b5565ffb38496175a7c1df60ac + because tinc did not handle packets larger than the path MTU in switch and hub + modes. We now allow it again in preparation of proper support, but default to + off. + +commit 052ff8b2c598358d1c5febaa9f9f5fc5d384cfd3 +Author: Guus Sliepen +Date: Sat Sep 12 13:34:11 2009 +0200 + + Put Subnet weight in a separate environment variable. + + Commit 5674bba5c54c1aee3a4ac5b3aba6b3ebded91bbc introduced weighted Subnets, + but the weight was included in the SUBNET variable passed to subnet-up/down + scripts. This makes it harder to use in those scripts. The weight is now + stripped from the SUBNET variable and put in the WEIGHT variabel. + +commit a60a0a1f1357508063ee565d672c39898a787e33 +Author: Guus Sliepen +Date: Thu Sep 10 19:51:08 2009 +0200 + + Don't stat() on iPhone/iPod. + + Grzegorz Dymarek noted that tinc segfaults at the stat() call in + execute_script() on the iPhone. We can omit the stat() call for the moment, + the subsequent call to system() will fail with just a warning. + +commit 4a5d42178cc0954efba8b24058da9c70cc77c35a +Author: Guus Sliepen +Date: Thu Sep 10 19:32:54 2009 +0200 + + Add support for iPhones and recent iPods. + + This is a slightly modified patch from Grzegorz Dymarek that allows tinc to use + the tunemu device, which allows tinc to be compiled for iPhones and recent + iPods. To enable support for tunemu, the --enable-tunemu option has to be used + when running the configure script. + +commit ff946d0423fe547ea42bb11acfb3035c3b8aee4e +Author: Guus Sliepen +Date: Wed Sep 9 14:51:36 2009 +0200 + + Another safe bitfield conversion. + +commit dd6226062c2356d2a3679e2c7972be71233cb9de +Author: Guus Sliepen +Date: Wed Sep 9 13:23:16 2009 +0200 + + Add the GPL license to the repository. + + Tinc is licensed under the GPL version 2 or later. To ensure autoconf does not + install the wrong license if COPYING is missing, we have to put the right one + in place. + +commit 81afa26e4ad53bea00da18a7666f63d33cf3f588 +Author: Guus Sliepen +Date: Wed Sep 9 12:04:08 2009 +0200 + + Convert bitfields to integers in a safe way. + + This is commit eb391c52eed46f3f03b404553df417851fc0cb90 redone, but without the + non-standard anonymous union. + +commit 9b394bc887695da6db74f4b9796b4823e553f8cc +Author: Guus Sliepen +Date: Tue Sep 8 21:45:24 2009 +0200 + + Ensure tinc compiles with gcc -std=c99. + + We use a lot of C99 features already, but also some extensions which are not in + the standard. + +commit f52ea0a7eb0383cc2a5f41db1bf24c39424fdb04 +Author: Guus Sliepen +Date: Tue Sep 8 18:21:52 2009 +0200 + + UNIX signal numbers start at 1. + +commit 73d77dd416b87b7c4e9b6aa450f64846235cd2b4 +Author: Guus Sliepen +Date: Tue Sep 8 18:18:36 2009 +0200 + + Replace asprintf() by xasprintf(). + +commit 3e55dc77f4ba19fd9e79f3d5ce9d28bb6b05019e +Author: Guus Sliepen +Date: Tue Sep 8 18:18:16 2009 +0200 + + Check the return value of fscanf() when reading a PID file. + +commit 5e0efd53e797a2b5468b91b41b6122f3b942efb2 +Author: Guus Sliepen +Date: Tue Sep 8 18:16:58 2009 +0200 + + Add xasprintf() and xvasprintf(). + + These functions wrap asprintf() and vasprintf(), and check the return value. If + the function failed, tinc will exit with an error message, similar to xmalloc() + and friends. + +commit 63fe89e9eb8ef9077bfe3cd416c86820715eb33b +Author: Michael Tokarev +Date: Sat Sep 5 17:24:41 2009 +0400 + + Remove extra semicolon in my definition of setpriority() + +commit 5a7fc58012da10b96073804994777255463d1b8d +Author: Guus Sliepen +Date: Tue Sep 8 16:35:28 2009 +0200 + + Always remove a node from the UDP tree before freeing it. + + Valgrind caught tinc reading free'd memory during a purge(). This was caused by + first removing it from the main node tree, which will already call free_node(), + and then removing it from the UDP tree. This might cause spurious segmentation + faults. + +commit de029ce46056e02908b5390da9b71a6a59133f26 +Author: Guus Sliepen +Date: Thu Jun 11 19:39:25 2009 +0200 + + Change level of some debug messages, zero pointer after freeing hostname. + +commit 66be914d35cb7e7ea4dd4aed68ae9e41addd9f70 +Author: Guus Sliepen +Date: Thu Jun 11 19:26:34 2009 +0200 + + Do not log errors when recvfrom() returns EAGAIN or EINTR. + + Although we select() before we call recvfrom(), it sometimes happens that + select() tells us we can read but a subsequent read fails anyway. This is + harmless. + +commit df4add94a4a6461758b218a9ad257efc735062fe +Author: Guus Sliepen +Date: Thu Jun 11 19:07:54 2009 +0200 + + Remove pending MTU probe events when a node's reachability status changes. + +commit 36f8e4da8b1708474505f5a1fa8cf1ba848921de +Author: Guus Sliepen +Date: Thu Jun 11 18:36:08 2009 +0200 + + Don't try to send MTU probes to unreachable nodes. + + If there is an outstanding MTU probe event for a node which is not reachable + anymore, a UDP packet would be sent to that node, which caused a key request to + be sent to that node, which triggered a NULL pointer dereference. Probes and + other UDP packets to unreachable nodes are now dropped. + +commit 261d1eac1c5bbe6c87aa707566f290e611169432 +Author: Guus Sliepen +Date: Fri Jun 5 16:14:31 2009 +0200 + + Properly set HMAC length for incoming packets. + +commit 591c38eb38dbf0851bdebdd50b08d1bcbf6d7b0f +Author: Michael Tokarev +Date: Fri Jun 5 13:33:58 2009 +0400 + + try outgoing connections before chroot/drop_privs + + When chrooted, we either need to force-initialize resolver + and/or nsswitch somehow (no clean way) or resolve all the + names we want before entering chroot jail. The latter + looks cleaner, easier and it is actually safe because + we still don't talk with the remote nodes there, only + initiating outgoing connections. + +commit a42a8dde45fe95aa3fd3f7f15a74c5166efe3633 +Author: Michael Tokarev +Date: Fri Jun 5 11:58:17 2009 +0400 + + cleanup setpriority thing to make it readable + +commit a5fb0d8c6c384b9ea1074fb469c0a3dd5b874e98 +Author: Guus Sliepen +Date: Thu May 28 23:18:22 2009 +0200 + + Add some const where appropriate. + +commit 41c10c5a966000531099c79d6006429253ff8fd6 +Author: Guus Sliepen +Date: Thu May 28 22:51:30 2009 +0200 + + Add ProcessPriority option. + + This option can be set to low, normal or high. On UNIX flavours, this changes + the nice value of the process by +10, 0 and -10 respectively. On Windows, it + sets the priority to BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS and + HIGH_PRIORITY_CLASS respectively. + + A high priority might help to reduce latency and packet loss on the VPN. + +commit 41a05f59ba2c3eb5caab555f096ed1b9fbe69ee3 +Author: Florian Forster +Date: Wed May 27 14:20:24 2009 +0200 + + src/net_socket.c: Bind outgoing TCP sockets to `BindToAddress'. + + If a host has multiple addresses on an interface, the source address of the TCP + connection(s) was picked by the operating system while the UDP packets used a + bound socket, i. e. the source address was the address specified by the user. + This caused problems because the receiving code requires the TCP connection and + the UDP connection to originate from the same IP address. + + This patch adds support for the `BindToInterface' and `BindToAddress' options + to the setup of outgoing TCP connections. + + Tested with Debian Etch on x86 and Debian Lenny on x86_64. + + Signed-off-by: Florian Forster + +commit 6b415a1a7f5bad2fff7b133ef2a2febccb96d6e5 +Author: Florian Forster +Date: Wed May 27 09:27:44 2009 +0200 + + src/linux/device.c: Fix segfault when running without `--net'. + + If running without `--net', the (global) variable `netname' is NULL. This + creates a segmentation fault because this NULL-pointer is passed to strdup: + + Program terminated with signal 11, Segmentation fault. + #0 0xb7d30463 in strlen () from /lib/tls/i686/cmov/libc.so.6 + (gdb) bt + #0 0xb7d30463 in strlen () from /lib/tls/i686/cmov/libc.so.6 + #1 0xb7d30175 in strdup () from /lib/tls/i686/cmov/libc.so.6 + #2 0x0805bf47 in xstrdup (s=0x0) at xmalloc.c:118 <--- + #3 0x0805be33 in setup_device () at device.c:66 + #4 0x0805072e in setup_myself () at net_setup.c:432 + #5 0x08050db2 in setup_network () at net_setup.c:536 + #6 0x0805b27f in main (argc=Cannot access memory at address 0x0) at tincd.c:580 + + This patch fixes this by checking `netname' in `setup_device'. An alternative + would be to check for NULL-pointers in `xstrdup' and return NULL in this case. + + Signed-off-by: Florian Forster + +commit a8a65cee083a27afe42cab360596e1453e7141b9 +Author: Michael Tokarev +Date: Sun May 24 17:23:24 2009 +0400 + + tunnelserver: log which ADD_SUBNET was refused + + Add some logging about refused ADD_SUBNET + (it causes subsequent client disconnect so it's + important to know which subnet was at fault). + + Maybe we should just ignore it completely. + +commit 4e9e3ca89dba68cbacaaa15ddfb298b181a969da +Author: Guus Sliepen +Date: Mon May 25 15:04:33 2009 +0200 + + Do not forward broadcast packets when TunnelServer is enabled. + + First of all, the idea behind the TunnelServer option is to hide all other + nodes from each other, so we shouldn't forward broadcast packets from them + anyway. The other reason is that since edges from other nodes are ignored, the + calculated minimum spanning tree might not be correct, which can result in + routing loops. + +commit 7fc69bc73b15349dafc193a50464caeb2f978369 +Author: Guus Sliepen +Date: Mon May 25 12:19:37 2009 +0200 + + Use packet size before decompression to calculate path MTU. + + Since compression can either grow or shrink a packet, the size of an MTU probe + after decompression might not reflect the real path MTU. Now we use the size + before decompression, which is independent of the compression algorithm, and + substract a safety margin such that the calculated path MTU will be safe even + for packets which grow as much as possible after compression. + +commit 1b3add6c29f8eb424a62837e89fe7d384fc94a48 +Author: Guus Sliepen +Date: Mon May 25 12:19:08 2009 +0200 + + Add declaration for sockaddrcmp_noport(). + +commit ca5b67111e4d797d15623c2163f67fe489dc3bf2 +Author: Michael Tokarev +Date: Sun May 24 22:32:24 2009 +0400 + + Fix ans_key exchange in recent changes + + send_ans_key() was using the wrong in vs. outkeylength to + terminate the key being sent, so it was always empty. + +commit 7034338bc36d9ea96d152091b9d58c2afc3f0c20 +Author: Guus Sliepen +Date: Sun May 24 19:35:51 2009 +0200 + + Use xrealloc instead of if(ptr) ptr = xmalloc(). + +commit e012e752f4f1a2b06dfab4640bbbea8f084999ff +Author: Guus Sliepen +Date: Sun May 24 19:31:31 2009 +0200 + + Fix initialisation of packet decryption context broken by commit 3308d13e7e3bf20cfeaf6f2ab17228a9820cea66. + + Instead of a single, global decryption context, each node has its own context. + However, in send_ans_key(), the global context was initialised. This commit + fixes that and removes the global context completely. + + Also only set status.validkey after all checks have been evaluated. + +commit 0246939ce18e1af9660b782b6814be182a7af9da +Author: Michael Tokarev +Date: Fri May 22 01:10:16 2009 +0400 + + don't log every strange packet coming to the UDP port + + it's a sure way to fill up syslog. Only log those if + debug level is up to PROTOCOL + +commit 576899ef0dec3aaede9b8ac101d189798587a646 +Author: Guus Sliepen +Date: Sun May 24 17:13:00 2009 +0200 + + Fix link to Mattias Nissler's tun/tap driver for MacOS/X. + + Thanks to Martin Christof Kindsmüller for spotting. + +commit 2c67eafc6e6c5e210636c0d2bad15827bf2d7cf0 +Author: Guus Sliepen +Date: Sun May 24 15:58:47 2009 +0200 + + If PMTUDiscovery is not set, do not forward packets via TCP unnecessarily. + +commit 7e4d57adf54ce369e4111bde0ccd3ea4b9e853ee +Author: Michael Tokarev +Date: Fri May 22 01:01:35 2009 +0400 + + ignore indirect edge registrations in tunnelserver mode + + In tunnelserver mode we're not interested to hear about + our client edges, just like in case of subnets. Just + ignore all requests which are not about our node or the + client node. + + The fix is very similar to what was done for subnets. + + Note that we don't need to add the "unknown" nodes to + the list in tunnelserver mode too, so move allocation + of new nodes down the line. + +commit 3759aa5f7745709c43f81faa36510ff650b4bf99 +Author: Michael Tokarev +Date: Wed May 20 18:40:04 2009 +0400 + + TunnelServer: Don't disconnect client on DEL_SUBNET too + + Similar changes as was in 2327d3f6eb5982bcc922ff1ab1ec436ba6aeffdc + but for del_subnet_h(). + + Before, we vere returning false (and causing disconnect of the + client) in case of tunnelserver and the client sending DEL_SUBNET + for non-his subnet or for subnet which owner isn't in our connection + list. + + After the mentioned change to add_subnet_h() that routine does not + add such indirect owners to the connection list anymore, so that + was ok (owner == NULL and we return true). + + But if we too has a connection with the node about which the client + is sending DEL_SUBNET notification, say, because that client lost + connection with that other node, we'll disconnect this client from + us too, returning false for indirect DEL_SUBNET. + + Fix that by allowing and ignoring indirect DEL_SUBNET in tunnelserver + mode. + + Also rearranged the function a bit, to match add_subnet_h() (in + particular, syntax-check everything first, see if we've seen this + request before). + + And also fix some comments. + +commit 218adee785df7c79ac18395d056a2eb6d63c407f +Author: Michael Tokarev +Date: Mon May 18 17:34:30 2009 +0400 + + format 'not supported on this platform' error message + + Format it in a similar way in all places, to make translation happier. + No functional changes. + +commit 54cb6b1aecb06a1ca44a7a60c74dd0d65b0043dd +Author: Michael Tokarev +Date: Mon May 18 17:00:00 2009 +0400 + + change error messages in droppriv code to match the rest + + Change formatting of error messages about failed syscalls + to be the same as in other places in tincd. + + Also suggest a change in "$foo not supported on this platform" + message as it's now used more than once. + +commit d4f9863635d06665cfbd3c46dc482344de240e97 +Author: Michael Tokarev +Date: Mon May 18 16:53:08 2009 +0400 + + bugfix: chdir(/) after chroot + + Fix the famous chdir(".") vs chdir("/") after chroot(something). + +commit 6be5d4f5b67764115b37528d2fe01bd245b3cd3e +Author: Michael Tokarev +Date: Mon May 18 16:49:39 2009 +0400 + + bugfix: move mlock to after detach() so it works for child, not parent + + mlock()/mlockall() are not persistent across fork(), and it's + done in parent process before daemon() which does fork(). So + basically, current --mlock does nothing useful. + + Move mlock() to after detach() so it works for child process + instead of parent. + + Also, check if the platform supports mlock right when processing + options (since else we'll have to die after startup, not at + startup, the error message will be in log only). + +commit cdf7f13c31310da0c40819fd812e19519bf4318c +Author: Michael Tokarev +Date: Mon May 18 16:28:55 2009 +0400 + + bugfix: initialize pid (as read from pidfile) to zero + + If we didn't read any number from a pid file, we'll return + an unitialized variable to the caller, and it will treat + that garbage as a pid of a process (possible to kill). + + Fix that. + +commit ec316aa32e8567395a88c4583007f01ffae008ce +Author: Michael Tokarev +Date: Mon May 18 16:25:41 2009 +0400 + + Implement privilege dropping + + Add two options, -R/--chroot and -U/--user=user, to chroot to the + config directory (where tinc.conf is located) and to perform + setuid to the user specified, after all the initialization is done. + + What's left is handling of pid file since we can't remove it anymore. + +commit 6698f7c390a5ae2f262e30560d9df59f9d5c418d +Author: Michael Tokarev +Date: Mon May 18 16:25:10 2009 +0400 + + Rename setup_network_connections() and split out try_outgoing_connections() + + In preparation of chroot/setuid operations, split out call to + try_outgoing_connections() from setup_network_connections() + (which was the last call in setup_network_connections()). + This is because dropping privileges should be done in-between + setup_network_connections() and try_outgoing_connections(). + + This patch renames setup_network_connections() to setup_network() + and moves call to try_outgoing_connections() into main routine. + + No functional changes. + +commit 3308d13e7e3bf20cfeaf6f2ab17228a9820cea66 +Author: Guus Sliepen +Date: Fri Apr 3 01:05:23 2009 +0200 + + Handle UDP packets from different and ports than advertised. + + Previously, tinc used a fixed address and port for each node for UDP packet + exchange. The port was the one advertised by that node as its listening port. + However, due to NAT the port might be different. Now, tinc sends a different + session key to each node. This way, the sending node can be determined from + incoming packets by checking the MAC against all session keys. If a match is + found, the address and port for that node are updated. + +commit 43fa7283ac01f2ecc95381b519ef6b3342546f35 +Author: Guus Sliepen +Date: Mon Mar 9 14:04:31 2009 +0100 + + Use a simple Random Early Drop algorithm in send_tcppacket(). + +commit d5b56bbba56480b5565ffb38496175a7c1df60ac +Author: Guus Sliepen +Date: Mon Mar 9 13:48:54 2009 +0100 + + Disable PMTUDiscovery in switch and hub modes. + + In switch and hub modes, tinc does not generate ICMP packets in response to + packets that are larger than the path MTU. However, if PMTUDiscovery is + enabled, the IP_MTU_DISCOVER and IPV6_MTU_DISCOVER option is set on the UDP + sockets, which causes all UDP packets to be sent with the DF bit set, causing + large packets to be dropped, even if they would otherwise be routed fine. + +commit 78fc59e994c764d072bf0045177f690a378d1308 +Author: Guus Sliepen +Date: Thu Mar 5 14:12:36 2009 +0100 + + Update THANKS and copyright information. + +commit 5674bba5c54c1aee3a4ac5b3aba6b3ebded91bbc +Author: Guus Sliepen +Date: Thu Mar 5 13:34:13 2009 +0100 + + Allow weight to be assigned to Subnets. + + Tinc allows multiple nodes to own the same Subnet, but did not have a sensible + way to decide which one to send packets to. Tinc also did not check the + reachability of nodes when deciding where to route packets to, so it would not + automatically fail over to a reachable node. + + Tinc now assigns a weight to each Subnet. The default weight is 10, with lower + weights having higher priority. The Subnets are now internally sorted in the + same way as the kernel's routing table, and the Subnets are search linearly, + skipping those of unreachable nodes. A small cache of recently used addresses + is used to speed up the lookup functions. + +commit 76a1bcaffcf1f1abf81fdda379b703a004640cb4 +Author: Michael Tokarev +Date: Sat Feb 28 16:37:51 2009 +0300 + + Enable PMTUDiscovery only if BOTH sides wants it. + + Don't enable PMTUDiscovery if at least one side does not support it. + Before it was enabled if at least one side supported it, now both are required. + +commit 1c1a67fd93530b9d16538ab2897c3911d3b16574 +Author: Guus Sliepen +Date: Tue Feb 17 14:43:05 2009 +0100 + + Handle neighbor solicitation requests without link layer addresses. + + Apparently FreeBSD likes to send out neighbor solicitation requests, even on a + tun interface where this is completely pointless. These requests do not have an + option header containing a link layer address, so the proxy-neighborsol code + was treating these requests as invalid. We now handle such requests, and send + back equally pointless replies, also without a link layer address. This seems + to satisfy FreeBSD. + +commit 2327d3f6eb5982bcc922ff1ab1ec436ba6aeffdc +Author: Michael Tokarev +Date: Mon Feb 9 23:51:10 2009 +0100 + + Allow tunnelserver to work with clients that have other peers. + + In TunnelServer mode, tinc server disconnects any client if it announces + indirect subnets -- subnets that are not theirs (e.g. subnets for nodes + the CLIENT has connections now, even if those nodes are known to the server + too). Fix that by ignoring such (indirect) announces instead. + + While we're at it, move check for such indirect subnet registration to + before allocating new node structure, as in TunnelServer mode we don't + really need to know that other node. + +commit 23730375f27c32e0fe1a59c7a761dd85296a7a4a +Author: Guus Sliepen +Date: Tue Feb 3 14:54:45 2009 +0100 + + Disable old RSA keys when generating new ones. + + When generating an RSA keypair, the new public and private keys are appended to + files. However, when OpenSSL reads keys it only reads the first in a file, not + the last. Instead of printing an easily ignored warning, tinc now disables old + keys when appending new ones. + +commit 0d0dfd0852e9b2c9a7660880966a3c84790d5ea2 +Author: Guus Sliepen +Date: Tue Jan 20 14:21:50 2009 +0100 + + Validate Name before using it in a filename when generating a keypair. + +commit 0966cca8ab6dcde2747c717f21d73fd332e04242 +Author: Guus Sliepen +Date: Tue Jan 20 14:20:44 2009 +0100 + + Allow reading config files with CRLF endings on Unix systems. + +commit d1910ac198232573c1b18d8238a27bc29bc73f8a +Author: Guus Sliepen +Date: Tue Jan 20 13:19:31 2009 +0100 + + Remove unused definitions from net.h. + +commit 503c32eb0ef9d6329e931559082f4ddf6d487dc6 +Author: Guus Sliepen +Date: Tue Jan 20 13:12:41 2009 +0100 + + Use a global list to track outgoing connections. + + Previously an outgoing_t was maintained for each outgoing connection, + but the pointer to it was either stored in a connection_t or in an event_t. + This made it very hard to keep track of and to clean up. + + Now a list is created when tinc starts and reads all the ConnectTo variables, + and which is recreated when tinc receives a HUP signal. + +commit a7e793c94ec414eb71ec2aa3debc9e2e5ed5cfef +Author: Guus Sliepen +Date: Mon Jan 19 23:17:28 2009 +0100 + + Add missing cleanup functions in close_network_connections(). + +commit 116065afe352221ac6c2c8e34c109252004d6a59 +Author: Guus Sliepen +Date: Mon Jan 19 22:50:05 2009 +0100 + + Change flush_events() to expire_events(). + + The former function made a totally bogus shallow copy of the event_tree, called + the handler of each event and then deleted the whole tree. This should've + caused tinc to crash when an ALARM signal was sent more than once, but for some + reason it didn't. It also behaved incorrectly when a handler added a new event. + + The new function just moves the expiration time of all events to the past. + +commit a39a9506cd041a7092a98498b362eaacfd2f33c3 +Author: Guus Sliepen +Date: Fri Jan 9 12:36:06 2009 +0100 + + Move free()s at the end om main() to the proper destructor functions. -Apply patch from Max Rijevski fixing a memory leak when closing connections. -It also cleans up more when stopping tinc, helping tools like valgrind. +commit 67df7fb7e1c9eefe4bbc920fdc68b595ef28abd9 +Author: Guus Sliepen +Date: Sat Jan 3 22:33:55 2009 +0100 ------------------------------------------------------------------------- -r1599 | guus | 2008-12-23 23:31:38 +0100 (di, 23 dec 2008) | 4 lines + Only send packets via UDP if UDP communication is possible. + + When no session key is known for a node, or when it is doing PMTU discovery but + no MTU probes have returned yet, packets are sent via TCP. Some logic is added + to make sure intermediate nodes continue forwarding via TCP. The per-node + packet queue is now no longer necessary and has been removed. -Handle broadcast and multicast packets in router mode. -Multicast packets are treated as broadcast packets. -Based on a patch from Max Rijevski. +commit b069da90d67b49dce041f513a3855b8da3d82f80 +Author: Guus Sliepen +Date: Sat Jan 3 22:06:10 2009 +0100 ------------------------------------------------------------------------- -r1598 | guus | 2008-12-22 22:49:23 +0100 (ma, 22 dec 2008) | 2 lines + Consistently allocate device and iface variables on the heap. + + This fixes a segfault when no Device has been specified and tinc exits, and it + would try to free() a static string. Thanks to Borg for spottin. -Update the manpage as well, and some whitespace to make its source more legible. +commit f81cea3bdc8683b27188cd8f24a2de906a29eb81 +Author: Guus Sliepen +Date: Sat Dec 27 11:09:43 2008 +0100 ------------------------------------------------------------------------- -r1597 | guus | 2008-12-22 22:29:21 +0100 (ma, 22 dec 2008) | 5 lines + Update documentation for git. -Update documentation. -- TCPOnly is not experimental. -- Do not mention old Linux kernels and Ethertap anymore. -- Document the DeviceType, PMTU and PMTUDiscovery options. +commit c81f90b91a054eeafcc3c8c45abc52045e4a8146 +Author: Guus Sliepen +Date: Fri Dec 26 13:47:34 2008 +0000 ------------------------------------------------------------------------- -r1596 | guus | 2008-12-22 21:35:45 +0100 (ma, 22 dec 2008) | 2 lines + Releasing 1.0.9. -Enable PMTU discovery by default. +commit a4d99ebf5042dedb609359cbbfc3fa4630b5fc70 +Author: Guus Sliepen +Date: Fri Dec 26 12:46:45 2008 +0000 ------------------------------------------------------------------------- -r1595 | guus | 2008-12-22 21:27:52 +0100 (ma, 22 dec 2008) | 2 lines + Add missing parentheses in check for IPv4 multicast addresses. -Update copyright information. +commit 099bc56f53e7d3cb7b799d26ff9535673ff03e1c +Author: Guus Sliepen +Date: Tue Dec 23 23:14:37 2008 +0000 ------------------------------------------------------------------------- -r1594 | guus | 2008-12-22 20:43:49 +0100 (ma, 22 dec 2008) | 2 lines + Apply patch from Max Rijevski fixing a memory leak when closing connections. + It also cleans up more when stopping tinc, helping tools like valgrind. -Update Dutch translation. +commit de032054dee67bcc406b4a15fb9e957a766d016a +Author: Guus Sliepen +Date: Tue Dec 23 22:31:38 2008 +0000 ------------------------------------------------------------------------- -r1593 | guus | 2008-12-22 20:40:40 +0100 (ma, 22 dec 2008) | 4 lines + Handle broadcast and multicast packets in router mode. + Multicast packets are treated as broadcast packets. + Based on a patch from Max Rijevski. -Make sure IPv6 sockets are IPv6 only. -This will get rid of the "Can't bind to 0.0.0.0 port 655/tcp: Address already -in use" message on Linux. +commit a5f899a9794f215e8174455ead04862a2c14a5b1 +Author: Guus Sliepen +Date: Mon Dec 22 21:49:23 2008 +0000 ------------------------------------------------------------------------- -r1592 | guus | 2008-12-22 20:33:37 +0100 (ma, 22 dec 2008) | 2 lines + Update the manpage as well, and some whitespace to make its source more legible. -Use TUNIFHEAD by default on FreeBSD to make sure IPv6 works. +commit e8f08ced76bf1b9a94dd0dc874ad22761ad8900b +Author: Guus Sliepen +Date: Mon Dec 22 21:29:21 2008 +0000 ------------------------------------------------------------------------- -r1591 | guus | 2008-12-21 17:19:31 +0100 (zo, 21 dec 2008) | 3 lines + Update documentation. + - TCPOnly is not experimental. + - Do not mention old Linux kernels and Ethertap anymore. + - Document the DeviceType, PMTU and PMTUDiscovery options. -Treat virtual network device as tap if Mode = switch or hub. -On OpenBSD, the link0 flag should still be set in tinc-up or by other means. +commit 0e4d419aae8a82f2ae4552f755894a9bc70c83d2 +Author: Guus Sliepen +Date: Mon Dec 22 20:35:45 2008 +0000 ------------------------------------------------------------------------- -r1579 | guus | 2008-12-05 15:17:39 +0100 (vr, 05 dec 2008) | 2 lines + Enable PMTU discovery by default. -Correct debug message. +commit e9576632dc4b780b867044269d06cc50f76d8c05 +Author: Guus Sliepen +Date: Mon Dec 22 20:27:52 2008 +0000 ------------------------------------------------------------------------- -r1578 | guus | 2008-11-18 16:11:27 +0100 (di, 18 nov 2008) | 2 lines + Update copyright information. -Prevent freeing a NULL pointer when a hostname is unresolvable. +commit f50dc972cde2644588eabf35a2422fe0e372a024 +Author: Guus Sliepen +Date: Mon Dec 22 19:43:49 2008 +0000 ------------------------------------------------------------------------- -r1577 | guus | 2008-10-25 21:54:00 +0200 (za, 25 okt 2008) | 2 lines + Update Dutch translation. -Do not try to send REQ_KEY or ANS_KEY requests to unreachable nodes. +commit 26b490e86bc305b150200c0b08cd8e9c3bd605fb +Author: Guus Sliepen +Date: Mon Dec 22 19:40:40 2008 +0000 ------------------------------------------------------------------------- -r1576 | guus | 2008-10-25 20:10:08 +0200 (za, 25 okt 2008) | 2 lines + Make sure IPv6 sockets are IPv6 only. + This will get rid of the "Can't bind to 0.0.0.0 port 655/tcp: Address already + in use" message on Linux. -Fix reading configuration files that do not end with a newline. +commit c6830ba821e6387be961ca68b32992382a74a0e9 +Author: Guus Sliepen +Date: Mon Dec 22 19:33:37 2008 +0000 ------------------------------------------------------------------------- -r1575 | guus | 2007-12-14 22:17:08 +0100 (vr, 14 dec 2007) | 3 lines + Use TUNIFHEAD by default on FreeBSD to make sure IPv6 works. -Make sure the prefixlength of subnets is sane. -Thanks to Sven-Haegar Koch for spotting the bug and providing a fix. +commit a269ec4193900feee01ac83f0e18a6e2b98e751f +Author: Guus Sliepen +Date: Sun Dec 21 16:19:31 2008 +0000 ------------------------------------------------------------------------- -r1555 | guus | 2007-08-18 00:09:00 +0200 (za, 18 aug 2007) | 2 lines + Treat virtual network device as tap if Mode = switch or hub. + On OpenBSD, the link0 flag should still be set in tinc-up or by other means. -Handle SERVICE_CONTROL_INTERROGATE requests. Thanks to Carsten Ralle for noticing this. +commit 38c2d6c1dae3f09c68baa37fd24caa2e0ec6d8ad +Author: Guus Sliepen +Date: Fri Dec 5 14:17:39 2008 +0000 ------------------------------------------------------------------------- -r1511 | guus | 2007-05-16 19:16:09 +0200 (wo, 16 mei 2007) | 2 lines + Correct debug message. -Releasing 1.0.8. +commit a36259435c17f76cf12476234a56f40fcd8faf41 +Author: Guus Sliepen +Date: Tue Nov 18 15:11:27 2008 +0000 ------------------------------------------------------------------------- -r1510 | guus | 2007-05-16 16:46:25 +0200 (wo, 16 mei 2007) | 2 lines + Prevent freeing a NULL pointer when a hostname is unresolvable. -Don't free struct addrinfo too early. Spotted by Christian Cier-Zniewski. +commit 4a1740ede7c1992f7f3da5e197db9975c0344ac3 +Author: Guus Sliepen +Date: Sat Oct 25 19:54:00 2008 +0000 ------------------------------------------------------------------------- -r1509 | guus | 2007-05-16 16:42:41 +0200 (wo, 16 mei 2007) | 2 lines + Do not try to send REQ_KEY or ANS_KEY requests to unreachable nodes. -Update dutch translation. +commit cb52aa06833a69e57b5e26337e51a4d375b6d8fb +Author: Guus Sliepen +Date: Sat Oct 25 18:10:08 2008 +0000 ------------------------------------------------------------------------- -r1508 | guus | 2007-05-16 16:42:08 +0200 (wo, 16 mei 2007) | 2 lines + Fix reading configuration files that do not end with a newline. -Make sure connection->name is never NULL. +commit b2cee41b187d79c095914d1097b8ff34a0609ec3 +Author: Guus Sliepen +Date: Fri Dec 14 21:17:08 2007 +0000 ------------------------------------------------------------------------- -r1507 | guus | 2007-05-14 11:21:09 +0200 (ma, 14 mei 2007) | 2 lines + Make sure the prefixlength of subnets is sane. + Thanks to Sven-Haegar Koch for spotting the bug and providing a fix. -Apply patch from "dnk" making sockets non-blocking under Windows. +commit d7ca0300a3f004e9dc7d97ffb6fa6bdeda890fda +Author: Guus Sliepen +Date: Fri Aug 17 22:09:00 2007 +0000 ------------------------------------------------------------------------- -r1500 | guus | 2007-02-14 10:32:16 +0100 (wo, 14 feb 2007) | 2 lines + Handle SERVICE_CONTROL_INTERROGATE requests. Thanks to Carsten Ralle for noticing this. -Close the proper filedescriptor (if it exists). +commit cf2be574948fdd02db0503d9639d3b6e268dd4ff +Author: Guus Sliepen +Date: Wed May 16 17:16:09 2007 +0000 ------------------------------------------------------------------------- -r1499 | guus | 2007-02-14 10:21:34 +0100 (wo, 14 feb 2007) | 2 lines + Releasing 1.0.8. -Apply patch from Scott Lamb fixing some memory and resource leaks. +commit 6af8900f8e1c7f2fe6a50a991ae6cbd0fd7edd43 +Author: Guus Sliepen +Date: Wed May 16 14:46:25 2007 +0000 ------------------------------------------------------------------------- -r1498 | guus | 2007-02-14 10:20:20 +0100 (wo, 14 feb 2007) | 2 lines + Don't free struct addrinfo too early. Spotted by Christian Cier-Zniewski. -Apply patch from Scott Lamb preventing an infinite loop when sending SIGALRM. +commit 31a190dc7db21aa9bb97792563dd83e7c41b831c +Author: Guus Sliepen +Date: Wed May 16 14:42:41 2007 +0000 ------------------------------------------------------------------------- -r1497 | guus | 2007-01-05 16:03:07 +0100 (vr, 05 jan 2007) | 2 lines + Update dutch translation. -Releasing 1.0.7. +commit 480dd127c8a539036ff82a3810a0ad83136944f8 +Author: Guus Sliepen +Date: Wed May 16 14:42:08 2007 +0000 ------------------------------------------------------------------------- -r1496 | guus | 2007-01-05 14:18:36 +0100 (vr, 05 jan 2007) | 2 lines + Make sure connection->name is never NULL. -Update copyright notices. +commit f0cf4991e2bd0e618c7020511fb12cb0b5c59a40 +Author: Guus Sliepen +Date: Mon May 14 09:21:09 2007 +0000 ------------------------------------------------------------------------- -r1495 | guus | 2007-01-05 14:17:33 +0100 (vr, 05 jan 2007) | 2 lines + Apply patch from "dnk" making sockets non-blocking under Windows. -No things to do for the 1.0 branch except bugfixing. +commit ab6f76f6a9fc8028fff96322a52b770710ffa1a9 +Author: Guus Sliepen +Date: Wed Feb 14 09:32:16 2007 +0000 ------------------------------------------------------------------------- -r1494 | guus | 2007-01-05 06:44:01 +0100 (vr, 05 jan 2007) | 2 lines + Close the proper filedescriptor (if it exists). -rename() cannot replace existing files on Windows. +commit 45fca3c723302868de3225e7509d2292008948f7 +Author: Guus Sliepen +Date: Wed Feb 14 09:21:34 2007 +0000 ------------------------------------------------------------------------- -r1493 | guus | 2007-01-05 05:49:02 +0100 (vr, 05 jan 2007) | 4 lines + Apply patch from Scott Lamb fixing some memory and resource leaks. -Fix generic BSD tun device to write only the actual packet length. -Due to a copy&paste bug, it tried to write a packet with the maximum size. -This was not a problem until the maximum size was increased to support VLANs. +commit 6c6535a4161d04accb3a22c51477e9f92ae34086 +Author: Guus Sliepen +Date: Wed Feb 14 09:20:20 2007 +0000 ------------------------------------------------------------------------- -r1492 | guus | 2007-01-04 16:28:36 +0100 (do, 04 jan 2007) | 2 lines + Apply patch from Scott Lamb preventing an infinite loop when sending SIGALRM. -Tapreader socket should be bound to localhost only. +commit 16c8b0e5bb7c05a0559b2d799a32204bfa0a0e3f +Author: Guus Sliepen +Date: Fri Jan 5 15:03:07 2007 +0000 ------------------------------------------------------------------------- -r1491 | guus | 2007-01-03 19:18:54 +0100 (wo, 03 jan 2007) | 5 lines + Releasing 1.0.7. -Use a ringbuffer in shared memory to transfer packets from the tapreader thread to the main thread. -It's a wonder it ever worked before. The socket that is created is not of a -datagram type, therefore packet boundaries were not preserved, which becomes -a problem as soon as the TAP-Win32 device receives packets in fast succession. +commit a1e72f84d08b76784c11ff723666ceeaef2756eb +Author: Guus Sliepen +Date: Fri Jan 5 13:18:36 2007 +0000 ------------------------------------------------------------------------- -r1490 | guus | 2006-12-18 18:38:05 +0100 (ma, 18 dec 2006) | 2 lines + Update copyright notices. -Releasing 1.0.6. +commit a22ef25f9b81993226a74b193377c7d6baf910ca +Author: Guus Sliepen +Date: Fri Jan 5 13:17:33 2007 +0000 ------------------------------------------------------------------------- -r1489 | guus | 2006-12-18 12:41:53 +0100 (ma, 18 dec 2006) | 2 lines + No things to do for the 1.0 branch except bugfixing. -Prevent compiler warnings about redefinition of EAI_FAMILY on FreeBSD 6.1. +commit d80cc7a5cc918a1dbf8dd789d2125f55c4949d27 +Author: Guus Sliepen +Date: Fri Jan 5 05:44:01 2007 +0000 ------------------------------------------------------------------------- -r1488 | guus | 2006-12-16 17:53:58 +0100 (za, 16 dec 2006) | 2 lines + rename() cannot replace existing files on Windows. -Do a simple test for linux/if_tun.h instead of no test at all. +commit 5214ece03009a916159c710cf436af1e92909f41 +Author: Guus Sliepen +Date: Fri Jan 5 04:49:02 2007 +0000 ------------------------------------------------------------------------- -r1487 | guus | 2006-12-16 17:40:09 +0100 (za, 16 dec 2006) | 5 lines + Fix generic BSD tun device to write only the actual packet length. + Due to a copy&paste bug, it tried to write a packet with the maximum size. + This was not a problem until the maximum size was increased to support VLANs. -Remove the test for linux/if_tun.h. -It has been available for years on any decent Linux distribution. -Although linux/if_tun.h is now required to compile tinc, -you can still run it on systems which only support Ethertap. +commit 40f02ff8eee359dc0ccc898f8da319f56af161ad +Author: Guus Sliepen +Date: Thu Jan 4 15:28:36 2007 +0000 ------------------------------------------------------------------------- -r1486 | guus | 2006-12-16 17:34:04 +0100 (za, 16 dec 2006) | 2 lines + Tapreader socket should be bound to localhost only. -We do properly check for malloc and realloc. +commit 03f3fc01e8d9402c4a14904fded883ff8cc574f6 +Author: Guus Sliepen +Date: Wed Jan 3 18:18:54 2007 +0000 ------------------------------------------------------------------------- -r1485 | guus | 2006-12-16 17:26:57 +0100 (za, 16 dec 2006) | 2 lines + Use a ringbuffer in shared memory to transfer packets from the tapreader thread to the main thread. + It's a wonder it ever worked before. The socket that is created is not of a + datagram type, therefore packet boundaries were not preserved, which becomes + a problem as soon as the TAP-Win32 device receives packets in fast succession. -Use standard autoconf macros instead of our own. +commit 52787a73b0211bcb4cb3cdd308b1a4c53a60f8ce +Author: Guus Sliepen +Date: Mon Dec 18 17:38:05 2006 +0000 ------------------------------------------------------------------------- -r1484 | guus | 2006-12-16 17:26:08 +0100 (za, 16 dec 2006) | 2 lines + Releasing 1.0.6. -Fix rule that creates html version of manpages. +commit b32c22cf54e47677726d15a5fca7eecc2fa42754 +Author: Guus Sliepen +Date: Mon Dec 18 11:41:53 2006 +0000 ------------------------------------------------------------------------- -r1483 | guus | 2006-12-15 21:44:33 +0100 (vr, 15 dec 2006) | 2 lines + Prevent compiler warnings about redefinition of EAI_FAMILY on FreeBSD 6.1. -Remove old Spanish translation. +commit 855806b2f75fc1c566cfaac01c788cdc625b4687 +Author: Guus Sliepen +Date: Sat Dec 16 16:53:58 2006 +0000 ------------------------------------------------------------------------- -r1482 | guus | 2006-12-15 21:43:39 +0100 (vr, 15 dec 2006) | 2 lines + Do a simple test for linux/if_tun.h instead of no test at all. -Remove unnecessary stuff from configure.in. +commit 0322c0883b76257c0893aa75a510e264056ac15b +Author: Guus Sliepen +Date: Sat Dec 16 16:40:09 2006 +0000 ------------------------------------------------------------------------- -r1476 | guus | 2006-12-12 15:54:39 +0100 (di, 12 dec 2006) | 2 lines + Remove the test for linux/if_tun.h. + It has been available for years on any decent Linux distribution. + Although linux/if_tun.h is now required to compile tinc, + you can still run it on systems which only support Ethertap. -Use the correct next pointer. +commit b55813dc0b4a6a1f70c0f8d5f0512c8cebb4a5ba +Author: Guus Sliepen +Date: Sat Dec 16 16:34:04 2006 +0000 ------------------------------------------------------------------------- -r1475 | guus | 2006-12-12 15:49:09 +0100 (di, 12 dec 2006) | 2 lines + We do properly check for malloc and realloc. -When building the minimum spanning tree, make sure we start from a reachable node. +commit 5219ee25a248fe26055e54215c5027cbf8483439 +Author: Guus Sliepen +Date: Sat Dec 16 16:26:57 2006 +0000 ------------------------------------------------------------------------- -r1474 | guus | 2006-11-29 18:18:39 +0100 (wo, 29 nov 2006) | 2 lines + Use standard autoconf macros instead of our own. -Search for lzo/lzo1x.h, lzo2/lzo1x.h and lzo1x.h. +commit 9d469a19691f9749b5d729a1ae903d7aa224a6e8 +Author: Guus Sliepen +Date: Sat Dec 16 16:26:08 2006 +0000 ------------------------------------------------------------------------- -r1473 | guus | 2006-11-29 17:57:46 +0100 (wo, 29 nov 2006) | 2 lines + Fix rule that creates html version of manpages. -Make sure resolved addressed for outgoing connections are freed, if there are any. +commit dd03a003962788eb21910c3faabbda0e84eff5eb +Author: Guus Sliepen +Date: Fri Dec 15 20:44:33 2006 +0000 ------------------------------------------------------------------------- -r1472 | guus | 2006-11-14 16:43:28 +0100 (di, 14 nov 2006) | 2 lines + Remove old Spanish translation. -Releasing 1.0.5. +commit 031e09f865e2c634f30fb0ed4e0b6a1f6df57588 +Author: Guus Sliepen +Date: Fri Dec 15 20:43:39 2006 +0000 ------------------------------------------------------------------------- -r1471 | guus | 2006-11-14 13:28:04 +0100 (di, 14 nov 2006) | 2 lines + Remove unnecessary stuff from configure.in. -EWOULDBLOCK does not exist on platforms without O_NONBLOCK +commit b834d67d7cc7d7f5d8b729b340ec0c809c7d54b6 +Author: Guus Sliepen +Date: Tue Dec 12 14:54:39 2006 +0000 ------------------------------------------------------------------------- -r1470 | guus | 2006-11-11 23:45:45 +0100 (za, 11 nov 2006) | 2 lines + Use the correct next pointer. -When deleting an entire tree, start at head, not at root. +commit 8b55dfacb199d152391aa5f7adbbbe35bceea7d7 +Author: Guus Sliepen +Date: Tue Dec 12 14:49:09 2006 +0000 ------------------------------------------------------------------------- -r1469 | guus | 2006-11-11 23:44:15 +0100 (za, 11 nov 2006) | 1 line + When building the minimum spanning tree, make sure we start from a reachable node. -Nodes use events, so event system should be initialised first and destroyed last. ------------------------------------------------------------------------- -r1468 | guus | 2006-11-11 22:37:22 +0100 (za, 11 nov 2006) | 2 lines +commit 47d916ec5eb61fa396c0ec6962afed7885141478 +Author: Guus Sliepen +Date: Wed Nov 29 17:18:39 2006 +0000 -Update Dutch translation. + Search for lzo/lzo1x.h, lzo2/lzo1x.h and lzo1x.h. ------------------------------------------------------------------------- -r1467 | guus | 2006-11-11 21:37:58 +0100 (za, 11 nov 2006) | 2 lines +commit 1bb5a284fec8c538f8ba243d4f9b2e46f68cd7e8 +Author: Guus Sliepen +Date: Wed Nov 29 16:57:46 2006 +0000 -Document GraphDumpFile option. + Make sure resolved addressed for outgoing connections are freed, if there are any. ------------------------------------------------------------------------- -r1466 | guus | 2006-11-11 21:10:46 +0100 (za, 11 nov 2006) | 2 lines +commit 5c69c390a17fc2b37218881e7285b639b79cfc5a +Author: Guus Sliepen +Date: Tue Nov 14 15:43:28 2006 +0000 -Support and autodetect LZO version 2.0 and later. + Releasing 1.0.5. ------------------------------------------------------------------------- -r1465 | guus | 2006-11-11 21:06:14 +0100 (za, 11 nov 2006) | 2 lines +commit e5b1b5cefb82531e8a700c2ee251da1bb0a06fbf +Author: Guus Sliepen +Date: Tue Nov 14 12:28:04 2006 +0000 -Support and autodetect LZO version 2.0 and later. + EWOULDBLOCK does not exist on platforms without O_NONBLOCK ------------------------------------------------------------------------- -r1464 | guus | 2006-11-11 15:37:03 +0100 (za, 11 nov 2006) | 2 lines +commit 3353ab37c2d6fb3652fbf7a85d85997be1c0c1b5 +Author: Guus Sliepen +Date: Sat Nov 11 22:45:45 2006 +0000 -popen() requires pclose(). + When deleting an entire tree, start at head, not at root. ------------------------------------------------------------------------- -r1463 | guus | 2006-11-11 15:11:16 +0100 (za, 11 nov 2006) | 2 lines +commit 0714ac6c59099a398e67770ad9c72fcec615812b +Author: Guus Sliepen +Date: Sat Nov 11 22:44:15 2006 +0000 -Added graph dumping ability based on Markus Goetz's patch. + Nodes use events, so event system should be initialised first and destroyed last. ------------------------------------------------------------------------- -r1462 | guus | 2006-11-11 14:43:00 +0100 (za, 11 nov 2006) | 2 lines +commit 35e4096120236db8d64a767f1ccdd6bf03a091fc +Author: Guus Sliepen +Date: Sat Nov 11 21:37:22 2006 +0000 -The "active" bit in node.status is not used. + Update Dutch translation. ------------------------------------------------------------------------- -r1461 | guus | 2006-08-10 00:31:10 +0200 (do, 10 aug 2006) | 3 lines +commit 315ef3e42bf16e03cfbea763442a52389a16b832 +Author: Guus Sliepen +Date: Sat Nov 11 20:37:58 2006 +0000 -memcpy() addresses from packet headers before calling the lookup functions. -This probably fixes a problem on the ARM architecture that causes tinc to fail to lookup IPv4 addresses. + Document GraphDumpFile option. ------------------------------------------------------------------------- -r1460 | guus | 2006-08-08 15:50:58 +0200 (di, 08 aug 2006) | 2 lines +commit 8d393b30a922110ec77d5b243347416b50cd2160 +Author: Guus Sliepen +Date: Sat Nov 11 20:10:46 2006 +0000 -Remove unused variable. + Support and autodetect LZO version 2.0 and later. ------------------------------------------------------------------------- -r1459 | guus | 2006-08-08 15:44:37 +0200 (di, 08 aug 2006) | 2 lines +commit bdb3c24cea06e9557738b42e3c37cd036613b58d +Author: Guus Sliepen +Date: Sat Nov 11 20:06:14 2006 +0000 -Remove unused parameter from maskcmp(). + Support and autodetect LZO version 2.0 and later. ------------------------------------------------------------------------- -r1458 | guus | 2006-08-08 15:44:19 +0200 (di, 08 aug 2006) | 2 lines +commit 0d1ac68c59db87141616f69bcd3d79c705b1ecd0 +Author: Guus Sliepen +Date: Sat Nov 11 14:37:03 2006 +0000 -Remove unused variables. + popen() requires pclose(). ------------------------------------------------------------------------- -r1457 | guus | 2006-08-08 15:29:17 +0200 (di, 08 aug 2006) | 2 lines +commit 0200d3cd5d773d9b101c33264532d2a301c2af32 +Author: Guus Sliepen +Date: Sat Nov 11 14:11:16 2006 +0000 -Fix format string warnings. + Added graph dumping ability based on Markus Goetz's patch. ------------------------------------------------------------------------- -r1456 | guus | 2006-08-08 15:21:08 +0200 (di, 08 aug 2006) | 2 lines +commit 1728d5b2c43b33700a9997f97fe8503ad1cf3585 +Author: Guus Sliepen +Date: Sat Nov 11 13:43:00 2006 +0000 -Do not break strict aliasing of status_t structs. + The "active" bit in node.status is not used. ------------------------------------------------------------------------- -r1455 | guus | 2006-06-12 23:45:39 +0200 (ma, 12 jun 2006) | 3 lines +commit 134dc8995b296b0bd8b346617c705204b0f3125c +Author: Guus Sliepen +Date: Wed Aug 9 22:31:10 2006 +0000 -Add generic host-up and host-down scripts. -Thanks to Menno Smits for a patch. + memcpy() addresses from packet headers before calling the lookup functions. + This probably fixes a problem on the ARM architecture that causes tinc to fail to lookup IPv4 addresses. ------------------------------------------------------------------------- -r1454 | guus | 2006-06-11 20:53:27 +0200 (zo, 11 jun 2006) | 3 lines +commit 64e0519cb5042b251e7345f07429e8b82e2ac09b +Author: Guus Sliepen +Date: Tue Aug 8 13:50:58 2006 +0000 -Use memcpy() to copy sockaddrs returned by getaddrinfo(). -Thanks to Miles Nordin for spotting this. + Remove unused variable. ------------------------------------------------------------------------- -r1453 | guus | 2006-04-26 18:29:47 +0200 (wo, 26 apr 2006) | 2 lines +commit ddcf079cad3351f0823fc07af15787d02e5f1901 +Author: Guus Sliepen +Date: Tue Aug 8 13:44:37 2006 +0000 -Restore length of the original packet in send_udppacket(). + Remove unused parameter from maskcmp(). ------------------------------------------------------------------------- -r1452 | guus | 2006-04-26 15:52:58 +0200 (wo, 26 apr 2006) | 2 lines +commit c620df3c1511643aa533ca31afc17db75b7255b8 +Author: Guus Sliepen +Date: Tue Aug 8 13:44:19 2006 +0000 -Update copyright notices, remove Ivo's email address. + Remove unused variables. ------------------------------------------------------------------------- -r1451 | guus | 2006-04-12 10:38:35 +0200 (wo, 12 apr 2006) | 3 lines +commit 9fa27097dd82e20299f5277ecb4efffb4a99669c +Author: Guus Sliepen +Date: Tue Aug 8 13:29:17 2006 +0000 -Fix a bug in handling prefixlengths that are not a multiple of 4. -Thanks to Sven-Haegar Koch for spotting the bug and providing the fix. + Fix format string warnings. ------------------------------------------------------------------------- -r1450 | guus | 2006-03-19 14:06:21 +0100 (zo, 19 mrt 2006) | 2 lines +commit eb391c52eed46f3f03b404553df417851fc0cb90 +Author: Guus Sliepen +Date: Tue Aug 8 13:21:08 2006 +0000 -Fix signedness compiler warnings. + Do not break strict aliasing of status_t structs. ------------------------------------------------------------------------- -r1449 | guus | 2006-03-19 13:43:45 +0100 (zo, 19 mrt 2006) | 2 lines +commit 2077451e07f93edc520cf5bc31815624a2b03fdd +Author: Guus Sliepen +Date: Mon Jun 12 21:45:39 2006 +0000 -Export flush_meta(). + Add generic host-up and host-down scripts. + Thanks to Menno Smits for a patch. ------------------------------------------------------------------------- -r1448 | guus | 2006-03-19 13:43:28 +0100 (zo, 19 mrt 2006) | 2 lines +commit f88c9942e1e3d4d463ec71ba5a60d045381bda8f +Author: Guus Sliepen +Date: Sun Jun 11 18:53:27 2006 +0000 -Missing #include. + Use memcpy() to copy sockaddrs returned by getaddrinfo(). + Thanks to Miles Nordin for spotting this. ------------------------------------------------------------------------- -r1447 | guus | 2006-02-06 13:30:51 +0100 (ma, 06 feb 2006) | 2 lines +commit 412f3fb5101514d9a7d4d9e5729ee9c665a07cb6 +Author: Guus Sliepen +Date: Wed Apr 26 16:29:47 2006 +0000 -Make sure $NAME is set correctly when executing tinc-down script. + Restore length of the original packet in send_udppacket(). ------------------------------------------------------------------------- -r1446 | guus | 2006-01-19 18:13:18 +0100 (do, 19 jan 2006) | 4 lines +commit de78d79db84c486afcc353884ec1770866beb653 +Author: Guus Sliepen +Date: Wed Apr 26 13:52:58 2006 +0000 -Apply patch from Scott Lamb adding an output buffer for the TCP sockets. -This helps coalescing multiple send_meta() commands into one TCP packet. -Also limit the size of the output buffer before dropping PACKETs. + Update copyright notices, remove Ivo's email address. ------------------------------------------------------------------------- -r1445 | guus | 2006-01-13 12:21:59 +0100 (vr, 13 jan 2006) | 2 lines +commit 8ebb017a10cd85406ddf5ab60d8ef1f56df526ff +Author: Guus Sliepen +Date: Wed Apr 12 08:38:35 2006 +0000 -Apply patch from Scott Lamb unifying configuration of TCP socket options. + Fix a bug in handling prefixlengths that are not a multiple of 4. + Thanks to Sven-Haegar Koch for spotting the bug and providing the fix. ------------------------------------------------------------------------- -r1444 | guus | 2006-01-13 12:09:19 +0100 (vr, 13 jan 2006) | 2 lines +commit af95368c0f30955f0e13b587d5d6d4989fd5a83e +Author: Guus Sliepen +Date: Sun Mar 19 13:06:21 2006 +0000 -EVP_Cleanup() when quitting. + Fix signedness compiler warnings. ------------------------------------------------------------------------- -r1443 | guus | 2005-11-16 11:45:11 +0100 (wo, 16 nov 2005) | 2 lines +commit fb1cda2ca4ca74a85e88c39c11b97340e6495a08 +Author: Guus Sliepen +Date: Sun Mar 19 12:43:45 2006 +0000 -Enable OpenSSL ENGINE, so crypto hardware gets used. Thanks to Andreas van Cranenburgh. + Export flush_meta(). ------------------------------------------------------------------------- -r1442 | guus | 2005-06-03 12:56:02 +0200 (vr, 03 jun 2005) | 2 lines +commit 098090468a9e1e8c5cdb0aeefa277329ff5f3406 +Author: Guus Sliepen +Date: Sun Mar 19 12:43:28 2006 +0000 -Add alloca.h to the list of necessary header files. + Missing #include. ------------------------------------------------------------------------- -r1441 | guus | 2005-06-03 12:16:03 +0200 (vr, 03 jun 2005) | 3 lines +commit a90f1b652c0fb52950f3b0783a7e2b7f2e0cf2db +Author: Guus Sliepen +Date: Mon Feb 6 12:30:51 2006 +0000 -Prevent possible buffer overflows when using very large (>= 8192 bit) RSA keys. -Thanks to Tonnerre Lombard for noticing! + Make sure $NAME is set correctly when executing tinc-down script. ------------------------------------------------------------------------- -r1440 | guus | 2005-05-04 21:38:28 +0200 (wo, 04 mei 2005) | 2 lines +commit 228e7a5c8f0e517dcede50f886965a44fca39853 +Author: Guus Sliepen +Date: Thu Jan 19 17:13:18 2006 +0000 -Releasing 1.0.4. + Apply patch from Scott Lamb adding an output buffer for the TCP sockets. + This helps coalescing multiple send_meta() commands into one TCP packet. + Also limit the size of the output buffer before dropping PACKETs. ------------------------------------------------------------------------- -r1439 | guus | 2005-05-04 20:09:30 +0200 (wo, 04 mei 2005) | 2 lines +commit a5a4d2b865879b8694760c0a5b5909c9a3675027 +Author: Guus Sliepen +Date: Fri Jan 13 11:21:59 2006 +0000 -Update copyright notices. + Apply patch from Scott Lamb unifying configuration of TCP socket options. ------------------------------------------------------------------------- -r1438 | guus | 2005-05-04 18:53:11 +0200 (wo, 04 mei 2005) | 2 lines +commit e02f13cdb3133c33ac84d9582e2f47ca5ebd35bf +Author: Guus Sliepen +Date: Fri Jan 13 11:09:19 2006 +0000 -Describe subnet-up/down scripts in documentation. + EVP_Cleanup() when quitting. ------------------------------------------------------------------------- -r1437 | guus | 2005-05-04 17:56:25 +0200 (wo, 04 mei 2005) | 2 lines +commit 0912260755021b9b836830dd99ae128c5fd912d9 +Author: Guus Sliepen +Date: Wed Nov 16 10:45:11 2005 +0000 -Several splay tree fixes. + Enable OpenSSL ENGINE, so crypto hardware gets used. Thanks to Andreas van Cranenburgh. ------------------------------------------------------------------------- -r1436 | guus | 2005-05-04 17:52:55 +0200 (wo, 04 mei 2005) | 2 lines +commit 64e4c12778697f71ad3fcf33ee6cf1066322caa5 +Author: Guus Sliepen +Date: Fri Jun 3 10:56:02 2005 +0000 -Searching through splay trees may change the tree variable. + Add alloca.h to the list of necessary header files. ------------------------------------------------------------------------- -r1435 | guus | 2005-05-04 17:51:45 +0200 (wo, 04 mei 2005) | 2 lines +commit e810545dc2ae158745624c1575b76c55f883c892 +Author: Guus Sliepen +Date: Fri Jun 3 10:16:03 2005 +0000 -Be on the safe side with initialisation of c->name. + Prevent possible buffer overflows when using very large (>= 8192 bit) RSA keys. + Thanks to Tonnerre Lombard for noticing! ------------------------------------------------------------------------- -r1434 | guus | 2005-04-06 22:43:37 +0200 (wo, 06 apr 2005) | 2 lines +commit 02746165a21a4a495d0069526c9a2355110a5784 +Author: Guus Sliepen +Date: Wed May 4 19:38:28 2005 +0000 -Remove unused (and potentially segfaulting) net2str() call. + Releasing 1.0.4. ------------------------------------------------------------------------- -r1433 | guus | 2005-01-20 16:14:25 +0100 (do, 20 jan 2005) | 2 lines +commit df3220a1549f992cbf4a9b6e67c1e67b69896c7d +Author: Guus Sliepen +Date: Wed May 4 18:09:30 2005 +0000 -Don't try to add a non-existing node back to the node_udp_tree. + Update copyright notices. ------------------------------------------------------------------------- -r1429 | guus | 2005-01-04 23:19:56 +0100 (di, 04 jan 2005) | 2 lines +commit 54a30e30ad41d7c0e73fcc4e6ff23c3e85af75c4 +Author: Guus Sliepen +Date: Wed May 4 16:53:11 2005 +0000 -Nodes should only be in the node_udp_tree if they are reachable. + Describe subnet-up/down scripts in documentation. ------------------------------------------------------------------------- -r1428 | guus | 2005-01-04 23:18:58 +0100 (di, 04 jan 2005) | 2 lines +commit bded1b74cc23c60e7319ed9e7465413b94a7914e +Author: Guus Sliepen +Date: Wed May 4 15:56:25 2005 +0000 -Correct size argument for strncat(). + Several splay tree fixes. ------------------------------------------------------------------------- -r1427 | guus | 2004-12-03 14:27:33 +0100 (vr, 03 dec 2004) | 2 lines +commit faaaa1ef38dcdf19d5d5d73ab66806b15467c043 +Author: Guus Sliepen +Date: Wed May 4 15:52:55 2005 +0000 -Use the proper free function. + Searching through splay trees may change the tree variable. ------------------------------------------------------------------------- -r1426 | guus | 2004-12-03 14:22:18 +0100 (vr, 03 dec 2004) | 2 lines +commit dc09f6fe896f5e35fffe8cc2004781b2e1b6fd5a +Author: Guus Sliepen +Date: Wed May 4 15:51:45 2005 +0000 -Free memory used by connection_t after it is deleted from the connection tree. + Be on the safe side with initialisation of c->name. ------------------------------------------------------------------------- -r1425 | guus | 2004-12-01 22:26:51 +0100 (wo, 01 dec 2004) | 2 lines +commit 92c4a28d7d43b68a324cf2eca741298ed6b692d6 +Author: Guus Sliepen +Date: Wed Apr 6 20:43:37 2005 +0000 -Small fix. + Remove unused (and potentially segfaulting) net2str() call. ------------------------------------------------------------------------- -r1424 | guus | 2004-12-01 21:06:39 +0100 (wo, 01 dec 2004) | 2 lines +commit 6363ed4d9c675b8b9301b694c4e4dd9c892e04e2 +Author: Guus Sliepen +Date: Thu Jan 20 15:14:25 2005 +0000 -subnet-up/down hooks, use list_t for the todo list. + Don't try to add a non-existing node back to the node_udp_tree. ------------------------------------------------------------------------- -r1423 | guus | 2004-12-01 21:06:05 +0100 (wo, 01 dec 2004) | 2 lines +commit 39fe3b445c2f20b325ee492dd1845877777b25c8 +Author: Guus Sliepen +Date: Tue Jan 4 22:19:56 2005 +0000 -subnet-up/down hooks + Nodes should only be in the node_udp_tree if they are reachable. ------------------------------------------------------------------------- -r1422 | guus | 2004-11-18 21:34:48 +0100 (do, 18 nov 2004) | 2 lines +commit fe0bfa3e65049d6e7cd46cf6caea7eb91b478008 +Author: Guus Sliepen +Date: Tue Jan 4 22:18:58 2005 +0000 -Fix splay tree code. + Correct size argument for strncat(). ------------------------------------------------------------------------- -r1421 | guus | 2004-11-16 20:02:54 +0100 (di, 16 nov 2004) | 2 lines +commit 56c36a14d87b58c14dbc48df4d3d977207e2c06e +Author: Guus Sliepen +Date: Fri Dec 3 13:27:33 2004 +0000 -Make sure broadcast packet reach the local network interface. + Use the proper free function. ------------------------------------------------------------------------- -r1420 | guus | 2004-11-11 20:42:25 +0100 (do, 11 nov 2004) | 2 lines +commit 18c617ecf29b9dfb95227e764c76fff0f9d7af96 +Author: Guus Sliepen +Date: Fri Dec 3 13:22:18 2004 +0000 -Releasing 1.0.3. + Free memory used by connection_t after it is deleted from the connection tree. ------------------------------------------------------------------------- -r1419 | guus | 2004-11-11 20:39:28 +0100 (do, 11 nov 2004) | 4 lines +commit 672ad5634cbedfbd6345e887935eed3e806f1e2d +Author: Guus Sliepen +Date: Wed Dec 1 21:26:51 2004 +0000 -Add more people who have contributed to tinc. -Remove details and sort on name; -the details were not always equally accurate and are hard to maintain. + Small fix. ------------------------------------------------------------------------- -r1418 | guus | 2004-11-11 12:17:04 +0100 (do, 11 nov 2004) | 2 lines +commit 40b1692940a8d588c08fb6b8f24ded7c33b041b1 +Author: Guus Sliepen +Date: Wed Dec 1 20:06:39 2004 +0000 -Short readme about how to compile tinc from a Subversion checkout. + subnet-up/down hooks, use list_t for the todo list. ------------------------------------------------------------------------- -r1417 | guus | 2004-11-11 00:28:32 +0100 (do, 11 nov 2004) | 2 lines +commit c46f56a8b8bb865dd8951441b5acf4701b5b5b09 +Author: Guus Sliepen +Date: Wed Dec 1 20:06:05 2004 +0000 -Updated dutch translation. + subnet-up/down hooks ------------------------------------------------------------------------- -r1416 | guus | 2004-11-11 00:21:41 +0100 (do, 11 nov 2004) | 2 lines +commit f08baa3072e7cd6cee7a2a7cde35b46c85363baf +Author: Guus Sliepen +Date: Thu Nov 18 20:34:48 2004 +0000 -Remove duplication. + Fix splay tree code. ------------------------------------------------------------------------- -r1415 | guus | 2004-11-11 00:20:59 +0100 (do, 11 nov 2004) | 2 lines +commit 0077cfaae112b63d6af6aa1e5d079cebdde84b74 +Author: Guus Sliepen +Date: Tue Nov 16 19:02:54 2004 +0000 -Set BSD tuns to broadcast mode. On OpenBSD, this enables IPv6 on the tun device! + Make sure broadcast packet reach the local network interface. ------------------------------------------------------------------------- -r1414 | guus | 2004-11-10 22:57:04 +0100 (wo, 10 nov 2004) | 2 lines +commit 79c48cfafd75dfc86a382f6454a9f009d3c099b6 +Author: Guus Sliepen +Date: Thu Nov 11 19:42:25 2004 +0000 -Update documentation. + Releasing 1.0.3. ------------------------------------------------------------------------- -r1413 | guus | 2004-11-10 22:56:31 +0100 (wo, 10 nov 2004) | 2 lines +commit 2771691bfc85b2544b30ccaee8a709bd26c7e1ab +Author: Guus Sliepen +Date: Thu Nov 11 19:39:28 2004 +0000 -Add BlockingTCP option, useful when using TCPOnly on slow or congested links. + Add more people who have contributed to tinc. + Remove details and sort on name; + the details were not always equally accurate and are hard to maintain. ------------------------------------------------------------------------- -r1412 | guus | 2004-11-10 22:14:08 +0100 (wo, 10 nov 2004) | 2 lines +commit 4f3f6f07b234b4abd32bf3bae1be0551bc7dd9dc +Author: Guus Sliepen +Date: Thu Nov 11 11:17:04 2004 +0000 -Support tunneling IPv6 on Solaris. + Short readme about how to compile tinc from a Subversion checkout. ------------------------------------------------------------------------- -r1411 | guus | 2004-11-10 20:36:02 +0100 (wo, 10 nov 2004) | 2 lines +commit 704c3707c2c400b7e35ef4ac2c1d21e0f2de0187 +Author: Guus Sliepen +Date: Wed Nov 10 23:28:32 2004 +0000 -Let compiler decide when to inline. + Updated dutch translation. ------------------------------------------------------------------------- -r1410 | guus | 2004-11-10 20:34:38 +0100 (wo, 10 nov 2004) | 2 lines +commit a20eb05714f828be7dc0f78c1a07f218a3482dff +Author: Guus Sliepen +Date: Wed Nov 10 23:21:41 2004 +0000 -Fix order of arguments for tar. + Remove duplication. ------------------------------------------------------------------------- -r1409 | guus | 2004-11-10 19:11:44 +0100 (wo, 10 nov 2004) | 2 lines +commit d8fe2ecdd8dc5caf6f8d6acf2923a0baed64735f +Author: Guus Sliepen +Date: Wed Nov 10 23:20:59 2004 +0000 -Use the generic BSD tun/tap code. + Set BSD tuns to broadcast mode. On OpenBSD, this enables IPv6 on the tun device! ------------------------------------------------------------------------- -r1408 | guus | 2004-11-10 19:10:59 +0100 (wo, 10 nov 2004) | 2 lines +commit 2369b0ab09a008c519cd4307b634fd294c66014e +Author: Guus Sliepen +Date: Wed Nov 10 21:57:04 2004 +0000 -Missing check for NULL-pointer. + Update documentation. ------------------------------------------------------------------------- -r1407 | guus | 2004-11-09 10:51:35 +0100 (di, 09 nov 2004) | 2 lines +commit 4fe7aff4d1b8605d4997b842481cc78bd062fe2a +Author: Guus Sliepen +Date: Wed Nov 10 21:56:31 2004 +0000 -Hopefully this really fixes late packet handling. + Add BlockingTCP option, useful when using TCPOnly on slow or congested links. ------------------------------------------------------------------------- -r1406 | guus | 2004-11-08 23:30:13 +0100 (ma, 08 nov 2004) | 2 lines +commit 5bba3124c8c23568def7a4804651a53f3a6b4fd2 +Author: Guus Sliepen +Date: Wed Nov 10 21:14:08 2004 +0000 -Fixed another bug in late packet handling. + Support tunneling IPv6 on Solaris. ------------------------------------------------------------------------- -r1405 | guus | 2004-11-08 23:11:33 +0100 (ma, 08 nov 2004) | 2 lines +commit d02d81ff9dbb12253957065752c56785aedccee3 +Author: Guus Sliepen +Date: Wed Nov 10 19:36:02 2004 +0000 -Update to make it compile again. + Let compiler decide when to inline. ------------------------------------------------------------------------- -r1404 | guus | 2004-11-08 23:03:28 +0100 (ma, 08 nov 2004) | 2 lines +commit db68db4b0e0f8b776f2d3dc938fb81dac975fdd8 +Author: Guus Sliepen +Date: Wed Nov 10 19:34:38 2004 +0000 -Hoopjumping to get the default directories in the manuals properly. + Fix order of arguments for tar. ------------------------------------------------------------------------- -r1403 | guus | 2004-11-02 21:50:53 +0100 (di, 02 nov 2004) | 2 lines +commit 923abcfa35c7282251d507af83d6163df76c943b +Author: Guus Sliepen +Date: Wed Nov 10 18:11:44 2004 +0000 -Splay trees. + Use the generic BSD tun/tap code. ------------------------------------------------------------------------- -r1402 | guus | 2004-11-01 18:05:09 +0100 (ma, 01 nov 2004) | 2 lines +commit e8b11b1cca11f7f50542a7b34f4251f43447db0d +Author: Guus Sliepen +Date: Wed Nov 10 18:10:59 2004 +0000 -Don't include .svn directory in sample configuration. + Missing check for NULL-pointer. ------------------------------------------------------------------------- -r1401 | guus | 2004-11-01 18:04:28 +0100 (ma, 01 nov 2004) | 2 lines +commit ca7948fc06fd0495dc8104d7f55948f702ac09e2 +Author: Guus Sliepen +Date: Tue Nov 9 09:51:35 2004 +0000 -Check for sys/uio.h, net/if_tun.h and net/if_tap.h + Hopefully this really fixes late packet handling. ------------------------------------------------------------------------- -r1400 | guus | 2004-11-01 18:02:19 +0100 (ma, 01 nov 2004) | 2 lines +commit f7b9761000000063bd00460af4b57117db7361e4 +Author: Guus Sliepen +Date: Mon Nov 8 22:30:13 2004 +0000 -static + Fixed another bug in late packet handling. ------------------------------------------------------------------------- -r1399 | guus | 2004-11-01 18:01:56 +0100 (ma, 01 nov 2004) | 2 lines +commit 14eab178295768311d4518289533005991add8ba +Author: Guus Sliepen +Date: Mon Nov 8 22:11:33 2004 +0000 -Generic device driver for *BSD and MacOS/X + Update to make it compile again. ------------------------------------------------------------------------- -r1398 | guus | 2004-11-01 16:18:53 +0100 (ma, 01 nov 2004) | 2 lines +commit 804b2892a5e26a2dc46d19397cc8b321b43b8add +Author: Guus Sliepen +Date: Mon Nov 8 22:03:28 2004 +0000 -Support alternative tun/tap driver from http://www-user.rhrk.uni-kl.de/~nissler/tuntap/ + Hoopjumping to get the default directories in the manuals properly. ------------------------------------------------------------------------- -r1397 | guus | 2004-11-01 16:18:22 +0100 (ma, 01 nov 2004) | 2 lines +commit 719cb95ea4fa7a2e6f4291aed607323f290c7a91 +Author: Guus Sliepen +Date: Tue Nov 2 20:50:53 2004 +0000 -Don't let tinc service depend on NDIS component. + Splay trees. ------------------------------------------------------------------------- -r1396 | guus | 2004-11-01 16:16:12 +0100 (ma, 01 nov 2004) | 2 lines +commit 2af1538976c9c85c40becfdd8601b421ad2ab057 +Author: Guus Sliepen +Date: Mon Nov 1 17:05:09 2004 +0000 -Correct return value. + Don't include .svn directory in sample configuration. ------------------------------------------------------------------------- -r1395 | guus | 2004-10-01 20:26:15 +0200 (vr, 01 okt 2004) | 2 lines +commit dced64c5c3625f6d2f0674e9fed14455aabc635e +Author: Guus Sliepen +Date: Mon Nov 1 17:04:28 2004 +0000 -Allow tinc to work with the latest TAP-Win32 driver. + Check for sys/uio.h, net/if_tun.h and net/if_tap.h ------------------------------------------------------------------------- -r1394 | guus | 2004-10-01 20:24:41 +0200 (vr, 01 okt 2004) | 2 lines +commit 1f00810da336f3b7132df17b7fe4625748ff4b63 +Author: Guus Sliepen +Date: Mon Nov 1 17:02:19 2004 +0000 -strndupa() is too arcane for some environments. + static ------------------------------------------------------------------------- -r1393 | guus | 2004-10-01 20:23:08 +0200 (vr, 01 okt 2004) | 2 lines +commit 82b29e9a3b1dc6b2104ab92ed78bf431a4e55649 +Author: Guus Sliepen +Date: Mon Nov 1 17:01:56 2004 +0000 -Fix several #includes. + Generic device driver for *BSD and MacOS/X ------------------------------------------------------------------------- -r1392 | guus | 2004-10-01 20:22:06 +0200 (vr, 01 okt 2004) | 3 lines +commit 922e5b7beaad5bb3fcbfa6b8dd13c05bda29e5fa +Author: Guus Sliepen +Date: Mon Nov 1 15:18:53 2004 +0000 -Move all #ifdef HAVE_HEADER_H #include to have.h, -this allows for simplification of configure.in. + Support alternative tun/tap driver from http://www-user.rhrk.uni-kl.de/~nissler/tuntap/ ------------------------------------------------------------------------- -r1391 | guus | 2004-09-20 22:56:14 +0200 (ma, 20 sep 2004) | 2 lines +commit faff6498821555e6afb3dc5e4e3b61d448a4fef1 +Author: Guus Sliepen +Date: Mon Nov 1 15:18:22 2004 +0000 -Remove duplicate #include "system.h" + Don't let tinc service depend on NDIS component. ------------------------------------------------------------------------- -r1390 | guus | 2004-09-20 22:55:49 +0200 (ma, 20 sep 2004) | 2 lines +commit 396ac4be802f8b75c5a2ab5925925427c61c1da3 +Author: Guus Sliepen +Date: Mon Nov 1 15:16:12 2004 +0000 -Marking potential late packets was in the wrong place. + Correct return value. ------------------------------------------------------------------------- -r1389 | guus | 2004-07-17 14:04:30 +0200 (za, 17 jul 2004) | 2 lines +commit 58153cca98fd43c37ae52d3cf69474c3d736c431 +Author: Guus Sliepen +Date: Fri Oct 1 18:26:15 2004 +0000 -Don't set $INTERFACE automatically, don't quit on EINTR/EAGAIN. + Allow tinc to work with the latest TAP-Win32 driver. ------------------------------------------------------------------------- -r1388 | guus | 2004-07-17 02:09:14 +0200 (za, 17 jul 2004) | 3 lines +commit 6411e0d8bda8abc2cef87ca852255502f9bb03d0 +Author: Guus Sliepen +Date: Fri Oct 1 18:24:41 2004 +0000 -Added UML network socket handling. -Now you can use tinc instead of uml_switch. + strndupa() is too arcane for some environments. ------------------------------------------------------------------------- -r1387 | guus | 2004-06-21 16:37:52 +0200 (ma, 21 jun 2004) | 2 lines +commit b0a80007e8945a11d7ce25aab096c5ee58ce0ad5 +Author: Guus Sliepen +Date: Fri Oct 1 18:23:08 2004 +0000 -Handle timeouts during connecting the same way as other errors. + Fix several #includes. ------------------------------------------------------------------------- -r1386 | guus | 2004-06-14 16:32:10 +0200 (ma, 14 jun 2004) | 2 lines +commit 2c40495747945bc497dac65b734a4995ab3400a3 +Author: Guus Sliepen +Date: Fri Oct 1 18:22:06 2004 +0000 -Clean up environment after executing scripts. + Move all #ifdef HAVE_HEADER_H #include to have.h, + this allows for simplification of configure.in. ------------------------------------------------------------------------- -r1382 | guus | 2004-04-15 16:09:56 +0200 (do, 15 apr 2004) | 2 lines +commit 7717cb0c54cc1b736b9f210b180c3cb3f4663ded +Author: Guus Sliepen +Date: Mon Sep 20 20:56:14 2004 +0000 -Increase MTU by 4 bytes to allow VLAN tagged Ethernet frames in hub and switch mode. + Remove duplicate #include "system.h" ------------------------------------------------------------------------- -r1374 | guus | 2004-03-21 15:21:22 +0100 (zo, 21 mrt 2004) | 2 lines +commit 5373129344d349ff6aeb2b3d21f947f5ecbbcfaf +Author: Guus Sliepen +Date: Mon Sep 20 20:55:49 2004 +0000 -Update copyrights, links, email addresses and let Subversion update $Id$ keywords. + Marking potential late packets was in the wrong place. ------------------------------------------------------------------------- -r1373 | guus | 2004-03-21 14:22:24 +0100 (zo, 21 mrt 2004) | 2 lines +commit c44f69a30243a94ab93bd15915dbfa71db698bde +Author: Guus Sliepen +Date: Sat Jul 17 12:04:30 2004 +0000 -Move CABAL branch to its rightful place: the trunk. + Don't set $INTERFACE automatically, don't quit on EINTR/EAGAIN. ------------------------------------------------------------------------- -r1371 | guus | 2004-03-20 23:23:42 +0100 (za, 20 mrt 2004) | 2 lines +commit dcec713675b604f5ef82e64d0671727e3f5ea518 +Author: Guus Sliepen +Date: Sat Jul 17 00:09:14 2004 +0000 -Revert Martin Kihlgren's patch, it doesn't work the way it should. + Added UML network socket handling. + Now you can use tinc instead of uml_switch. ------------------------------------------------------------------------- -r1370 | guus | 2004-03-20 16:40:26 +0100 (za, 20 mrt 2004) | 2 lines +commit fe84fafcb684391739a1b3366705c58683210392 +Author: Guus Sliepen +Date: Mon Jun 21 14:37:52 2004 +0000 -Use Subversion to create ChangeLog, better svn-clean rule. + Handle timeouts during connecting the same way as other errors. ------------------------------------------------------------------------- -r1369 | guus | 2004-03-20 16:33:07 +0100 (za, 20 mrt 2004) | 2 lines +commit e5e0dd7534be5fb96032fb733ca36a09cb067f17 +Author: Guus Sliepen +Date: Mon Jun 14 14:32:10 2004 +0000 -Fix declaration of update_node_address(). + Clean up environment after executing scripts. ------------------------------------------------------------------------- -r1368 | guus | 2004-03-20 16:28:55 +0100 (za, 20 mrt 2004) | 3 lines +commit 9e44f116bf0f72d1dd4f099440a351dbe0a74573 +Author: Guus Sliepen +Date: Thu Apr 15 14:09:56 2004 +0000 -Applied Martin Kihlgren's IdentityGenerosity patch, -simplified and renamed to StrictSource. + Increase MTU by 4 bytes to allow VLAN tagged Ethernet frames in hub and switch mode. ------------------------------------------------------------------------- -r1365 | guus | 2004-03-15 20:09:52 +0100 (ma, 15 mrt 2004) | 2 lines +commit 7926a156e5b118d06295228e57de0cc9de0433b4 +Author: Guus Sliepen +Date: Sun Mar 21 14:21:22 2004 +0000 -Even better svn-clean command. + Update copyrights, links, email addresses and let Subversion update $Id$ keywords. ------------------------------------------------------------------------- -r1362 | guus | 2004-03-15 19:36:14 +0100 (ma, 15 mrt 2004) | 2 lines +commit 42e01abd54bd36ee84a45a2b646cfa27034de8d1 +Merge: 5ca64f8 af86a32 +Author: Guus Sliepen +Date: Sun Mar 21 13:22:24 2004 +0000 -Updating dutch translation. + Move CABAL branch to its rightful place: the trunk. ------------------------------------------------------------------------- -r1361 | guus | 2004-03-15 19:15:02 +0100 (ma, 15 mrt 2004) | 2 lines +commit af86a3226ea42375644b3f99c182c778d327de1e +Author: Guus Sliepen +Date: Sat Mar 20 22:23:42 2004 +0000 -Only read our public key if it wasn't already in the private key file. + Revert Martin Kihlgren's patch, it doesn't work the way it should. ------------------------------------------------------------------------- -r1360 | guus | 2004-03-15 19:05:41 +0100 (ma, 15 mrt 2004) | 2 lines +commit 27c304940a5dbe83fb0f655c5c43150bafed3b63 +Author: Guus Sliepen +Date: Sat Mar 20 15:40:26 2004 +0000 -Eat trailing whitespace in config files. + Use Subversion to create ChangeLog, better svn-clean rule. ------------------------------------------------------------------------- -r1359 | guus | 2004-03-15 18:54:19 +0100 (ma, 15 mrt 2004) | 2 lines +commit 8df22248293a8cd5e6056415b6e08740e40aa2bc +Author: Guus Sliepen +Date: Sat Mar 20 15:33:07 2004 +0000 -Remove CVS related cruft. + Fix declaration of update_node_address(). ------------------------------------------------------------------------- -r1358 | guus | 2004-03-15 18:53:17 +0100 (ma, 15 mrt 2004) | 2 lines +commit 56aad1bb486675ff9aba31418708cc179eea0381 +Author: Guus Sliepen +Date: Sat Mar 20 15:28:55 2004 +0000 -Replace cvs-clean with a much better svn-clean. + Applied Martin Kihlgren's IdentityGenerosity patch, + simplified and renamed to StrictSource. ------------------------------------------------------------------------- -r1352 | guus | 2004-01-11 00:21:36 +0100 (zo, 11 jan 2004) | 3 lines +commit 8c189c2a9b77fb326ab5f27a05bf2601e16af017 +Author: Guus Sliepen +Date: Mon Mar 15 19:09:52 2004 +0000 -Remove autogen.sh, the autoreconf program does exactly that. -Update everything for the latest autoconf and automake versions. + Even better svn-clean command. ------------------------------------------------------------------------- -r1351 | guus | 2004-01-11 00:19:20 +0100 (zo, 11 jan 2004) | 2 lines +commit b05df3fcbfb8dbef4c87691d118c5b68aeb79e4a +Author: Guus Sliepen +Date: Mon Mar 15 18:36:14 2004 +0000 -Small updates. + Updating dutch translation. ------------------------------------------------------------------------- -r1350 | guus | 2003-12-27 17:32:52 +0100 (za, 27 dec 2003) | 2 lines +commit a92c471a2bc0773a7473ef0361d1a51fafee50d4 +Author: Guus Sliepen +Date: Mon Mar 15 18:15:02 2004 +0000 -Don't forget to update destination MAC address. + Only read our public key if it wasn't already in the private key file. ------------------------------------------------------------------------- -r1349 | guus | 2003-12-24 11:48:15 +0100 (wo, 24 dec 2003) | 2 lines +commit a67a21ef3c17d32af95373e921138429a7fc507e +Author: Guus Sliepen +Date: Mon Mar 15 18:05:41 2004 +0000 -Small fixes for PMTU discovery. + Eat trailing whitespace in config files. ------------------------------------------------------------------------- -r1348 | guus | 2003-12-22 12:05:23 +0100 (ma, 22 dec 2003) | 2 lines +commit 4350704d6578656af98195b26006c6b6d6a798e3 +Author: Guus Sliepen +Date: Mon Mar 15 17:54:19 2004 +0000 -Missing definitions. + Remove CVS related cruft. ------------------------------------------------------------------------- -r1347 | guus | 2003-12-22 12:04:17 +0100 (ma, 22 dec 2003) | 2 lines +commit 538595f7350ba6c7d11aba7d9f481ea1641e1857 +Author: Guus Sliepen +Date: Mon Mar 15 17:53:17 2004 +0000 -Improvements for PMTU discovery and IPv4 packet fragmentation. + Replace cvs-clean with a much better svn-clean. ------------------------------------------------------------------------- -r1346 | guus | 2003-12-20 22:25:17 +0100 (za, 20 dec 2003) | 2 lines +commit 5ca64f89be71131e77a29661827dc8866a5f278c +Author: cvs2svn +Date: Sat Jan 10 23:21:36 2004 +0000 -Better name, show probed MTU in dump. + This commit was generated by cvs2svn to compensate for changes in r1352, + which included commits to RCS files with non-trunk default branches. ------------------------------------------------------------------------- -r1345 | guus | 2003-12-20 22:20:10 +0100 (za, 20 dec 2003) | 2 lines +commit fcd836c609568fab323f4af6dd525de957a6f4cc +Author: Guus Sliepen +Date: Sat Jan 10 23:21:36 2004 +0000 -Describe the TunnelServer and PMTUDiscovery options. + Remove autogen.sh, the autoreconf program does exactly that. + Update everything for the latest autoconf and automake versions. ------------------------------------------------------------------------- -r1344 | guus | 2003-12-20 22:09:33 +0100 (za, 20 dec 2003) | 2 lines +commit f2aa7466e6db9777090583ef26d923fc0a4fcea8 +Author: Guus Sliepen +Date: Sat Jan 10 23:19:20 2004 +0000 -More sensible name, and try to set PMTU discovery on IPv6 sockets as well. + Small updates. ------------------------------------------------------------------------- -r1343 | guus | 2003-12-20 20:47:53 +0100 (za, 20 dec 2003) | 2 lines +commit 519d63bedbdcc533dd7839aae02b4d7bc2debfb0 +Author: Guus Sliepen +Date: Sat Dec 27 16:32:52 2003 +0000 -Let tinc figure out the exact MTU of the link. + Don't forget to update destination MAC address. ------------------------------------------------------------------------- -r1342 | guus | 2003-12-13 22:50:26 +0100 (za, 13 dec 2003) | 2 lines +commit aebc97a77f37ec63fbd36721f9b284c975e54270 +Author: Guus Sliepen +Date: Wed Dec 24 10:48:15 2003 +0000 -Forget multicast. Always inline some function. + Small fixes for PMTU discovery. ------------------------------------------------------------------------- -r1341 | guus | 2003-12-12 20:52:25 +0100 (vr, 12 dec 2003) | 2 lines +commit 2c7ce7de12d16cb407fd40224b6cb802528ee942 +Author: Guus Sliepen +Date: Mon Dec 22 11:05:23 2003 +0000 -Code beautification, start of multicast support. + Missing definitions. ------------------------------------------------------------------------- -r1340 | guus | 2003-12-08 13:00:40 +0100 (ma, 08 dec 2003) | 2 lines +commit 35399784b695c9ac692beba7be7930ee9f24412f +Author: Guus Sliepen +Date: Mon Dec 22 11:04:17 2003 +0000 -Fix proxy-neighborsolicitation. + Improvements for PMTU discovery and IPv4 packet fragmentation. ------------------------------------------------------------------------- -r1339 | guus | 2003-12-07 15:31:09 +0100 (zo, 07 dec 2003) | 2 lines +commit 6d41b429a26dd1acaa7c56b2124f2daf55b5b97c +Author: Guus Sliepen +Date: Sat Dec 20 21:25:17 2003 +0000 -Don't retry if configuration is wrong from the beginning. + Better name, show probed MTU in dump. ------------------------------------------------------------------------- -r1338 | guus | 2003-12-07 15:29:02 +0100 (zo, 07 dec 2003) | 2 lines +commit af490a745d4ddc8994ceca546b5f9139f6a6ebe2 +Author: Guus Sliepen +Date: Sat Dec 20 21:20:10 2003 +0000 -Missing space between words. + Describe the TunnelServer and PMTUDiscovery options. ------------------------------------------------------------------------- -r1337 | guus | 2003-12-07 15:28:39 +0100 (zo, 07 dec 2003) | 2 lines +commit 9bab08e972ae0ca4b904a659d9aed46aaa9b5dd5 +Author: Guus Sliepen +Date: Sat Dec 20 21:09:33 2003 +0000 -Read MaxTimeout from tinc.conf like the manpage says. + More sensible name, and try to set PMTU discovery on IPv6 sockets as well. ------------------------------------------------------------------------- -r1336 | guus | 2003-11-28 00:24:59 +0100 (vr, 28 nov 2003) | 2 lines +commit 6b12bea62fe2e4bd8b5b6bd0e5ca7f53318705db +Author: Guus Sliepen +Date: Sat Dec 20 19:47:53 2003 +0000 -Complain if pid file cannot be created. + Let tinc figure out the exact MTU of the link. ------------------------------------------------------------------------- -r1335 | guus | 2003-11-17 16:30:18 +0100 (ma, 17 nov 2003) | 2 lines +commit e8fbef5de653e4df35eee49aae6e1ac92d6466e6 +Author: Guus Sliepen +Date: Sat Dec 13 21:50:26 2003 +0000 -Replace Opaque and Strict options with a TunnelServer option. + Forget multicast. Always inline some function. ------------------------------------------------------------------------- -r1334 | guus | 2003-11-10 23:31:53 +0100 (ma, 10 nov 2003) | 2 lines +commit 5a1406adefd8b51981af0da5ac0ebec830eb43b4 +Author: Guus Sliepen +Date: Fri Dec 12 19:52:25 2003 +0000 -Add Opaque option which prevent information from being forwarded to certain nodes. + Code beautification, start of multicast support. ------------------------------------------------------------------------- -r1332 | guus | 2003-11-08 16:29:40 +0100 (za, 08 nov 2003) | 2 lines +commit 354b7ab20e04736b368985a9e9dfd54ff5b7584e +Author: Guus Sliepen +Date: Mon Dec 8 12:00:40 2003 +0000 -Release notes for 1.0.2 + Fix proxy-neighborsolicitation. ------------------------------------------------------------------------- -r1331 | guus | 2003-11-08 16:09:03 +0100 (za, 08 nov 2003) | 2 lines +commit 331cef948db4b3cca245ab62cb0fafb5b1e5ebb3 +Author: Guus Sliepen +Date: Sun Dec 7 14:31:09 2003 +0000 -Add missing definitions. + Don't retry if configuration is wrong from the beginning. ------------------------------------------------------------------------- -r1330 | guus | 2003-11-08 13:56:24 +0100 (za, 08 nov 2003) | 2 lines +commit a3cd273751fdcef90a43108a5d2e669877b0bccb +Author: Guus Sliepen +Date: Sun Dec 7 14:29:02 2003 +0000 -Update dutch translation. + Missing space between words. ------------------------------------------------------------------------- -r1329 | guus | 2003-10-12 13:40:00 +0200 (zo, 12 okt 2003) | 2 lines +commit 25447b384173cc3c99660c784fd784c787917e80 +Author: Guus Sliepen +Date: Sun Dec 7 14:28:39 2003 +0000 -Fix another bug in meta.c. + Read MaxTimeout from tinc.conf like the manpage says. ------------------------------------------------------------------------- -r1328 | guus | 2003-10-11 16:42:30 +0200 (za, 11 okt 2003) | 2 lines +commit 0b5e6cf04ec0c7e3c54c74a54a32b30e6e3c1f83 +Author: Guus Sliepen +Date: Thu Nov 27 23:24:59 2003 +0000 -Small fixes in documentation. + Complain if pid file cannot be created. ------------------------------------------------------------------------- -r1327 | guus | 2003-10-11 16:18:52 +0200 (za, 11 okt 2003) | 3 lines +commit e3220cacb5bc79fc56167e61b7a342f88a33a479 +Author: Guus Sliepen +Date: Mon Nov 17 15:30:18 2003 +0000 -Fix bug that could lead to an assertion failure in libcrypto when multiple -requests arrive and TCP packets are heavily fragmented. + Replace Opaque and Strict options with a TunnelServer option. ------------------------------------------------------------------------- -r1326 | guus | 2003-10-11 14:28:48 +0200 (za, 11 okt 2003) | 2 lines +commit 0e59fb022c6c015a5be7ed70e0378cb011be98b5 +Author: Guus Sliepen +Date: Mon Nov 10 22:31:53 2003 +0000 -Parentheses in the wrong spots. + Add Opaque option which prevent information from being forwarded to certain nodes. ------------------------------------------------------------------------- -r1325 | guus | 2003-10-11 14:16:13 +0200 (za, 11 okt 2003) | 2 lines +commit a8f415e67fd316d929f9b9e6661e0d3d66fc197b +Author: Guus Sliepen +Date: Sat Nov 8 15:29:40 2003 +0000 -Check all EVP_ function calls. + Release notes for 1.0.2 ------------------------------------------------------------------------- -r1324 | guus | 2003-10-10 18:24:24 +0200 (vr, 10 okt 2003) | 3 lines +commit 507a83c74635955f803bb26c450f3e83dd4809f9 +Author: Guus Sliepen +Date: Sat Nov 8 15:09:03 2003 +0000 -Check return value of EVP_* functions, and check if length before en/decryption -matches that after in meta.c. + Add missing definitions. ------------------------------------------------------------------------- -r1323 | guus | 2003-10-10 18:23:30 +0200 (vr, 10 okt 2003) | 2 lines +commit 0271de0e80459bdebcac50d38c053d4aaf657e9a +Author: Guus Sliepen +Date: Sat Nov 8 12:56:24 2003 +0000 -Fix ASCII art. + Update dutch translation. ------------------------------------------------------------------------- -r1322 | guus | 2003-10-09 23:33:15 +0200 (do, 09 okt 2003) | 2 lines +commit d35a510fff65a7a3318036f27c11b956526b26f6 +Author: Guus Sliepen +Date: Sun Oct 12 11:40:00 2003 +0000 -Update documentation. + Fix another bug in meta.c. ------------------------------------------------------------------------- -r1321 | guus | 2003-10-08 14:09:37 +0200 (wo, 08 okt 2003) | 2 lines +commit e88ea7277a97d46fa2c3ba1896cf0d0c62bdf128 +Author: Guus Sliepen +Date: Sat Oct 11 14:42:30 2003 +0000 -Some platforms don't know sa_family_t or define it other than uint16_t. + Small fixes in documentation. ------------------------------------------------------------------------- -r1320 | guus | 2003-10-08 13:37:53 +0200 (wo, 08 okt 2003) | 2 lines +commit ffb7327c20952cefcb5578e40f9802295172c5c2 +Author: Guus Sliepen +Date: Sat Oct 11 14:18:52 2003 +0000 -Set media status for newer TAP-Win32 driver. + Fix bug that could lead to an assertion failure in libcrypto when multiple + requests arrive and TCP packets are heavily fragmented. ------------------------------------------------------------------------- -r1319 | guus | 2003-10-08 13:37:20 +0200 (wo, 08 okt 2003) | 2 lines +commit 258b7ce220607bb3f2a24bb7cab5fcd19e82314a +Author: Guus Sliepen +Date: Sat Oct 11 12:28:48 2003 +0000 -Missing declaration. + Parentheses in the wrong spots. ------------------------------------------------------------------------- -r1318 | guus | 2003-10-08 13:34:55 +0200 (wo, 08 okt 2003) | 2 lines +commit a1ab57e2755df6c1a8fab95a0886fea368200b96 +Author: Guus Sliepen +Date: Sat Oct 11 12:16:13 2003 +0000 -Update missing definitions, structs describing headers get __packed__ attribute. + Check all EVP_ function calls. ------------------------------------------------------------------------- -r1317 | guus | 2003-10-08 13:33:54 +0200 (wo, 08 okt 2003) | 2 lines +commit b0dd705a264f0f72a7afba6de85200598cbe083b +Author: Guus Sliepen +Date: Fri Oct 10 16:24:24 2003 +0000 -Forgot to #include "xalloc.h" + Check return value of EVP_* functions, and check if length before en/decryption + matches that after in meta.c. ------------------------------------------------------------------------- -r1316 | guus | 2003-10-06 18:49:42 +0200 (ma, 06 okt 2003) | 2 lines +commit 9d2bf718f233672c11a9740ed2a1539eaab1509b +Author: Guus Sliepen +Date: Fri Oct 10 16:23:30 2003 +0000 -Make sure type of AF_UNKNOWN is sa_family_t. + Fix ASCII art. ------------------------------------------------------------------------- -r1315 | guus | 2003-10-06 18:13:08 +0200 (ma, 06 okt 2003) | 2 lines +commit e33307fc9f5354933554d26de618db1b08fc04c0 +Author: Guus Sliepen +Date: Thu Oct 9 21:33:15 2003 +0000 -PIDs are of type pid_t, and use %ld when reading/writing them to the pidfile. + Update documentation. ------------------------------------------------------------------------- -r1314 | guus | 2003-10-06 18:05:30 +0200 (ma, 06 okt 2003) | 2 lines +commit 98edfb14fcc7167d24d440ed2772d0755daac3b7 +Author: Guus Sliepen +Date: Wed Oct 8 12:09:37 2003 +0000 -Use CPPFLAGS, LDFLAGS and LIBS as appropiate. + Some platforms don't know sa_family_t or define it other than uint16_t. ------------------------------------------------------------------------- -r1313 | guus | 2003-10-06 16:41:45 +0200 (ma, 06 okt 2003) | 2 lines +commit f2ebdf75806d8c04138db0eb30727f846541ed75 +Author: Guus Sliepen +Date: Wed Oct 8 11:37:53 2003 +0000 -Don't confuse users with "Address family not supported" warnings. + Set media status for newer TAP-Win32 driver. ------------------------------------------------------------------------- -r1312 | guus | 2003-10-06 16:33:04 +0200 (ma, 06 okt 2003) | 2 lines +commit acf5f9c968d17ad3e31129d2184309de06d72eed +Author: Guus Sliepen +Date: Wed Oct 8 11:37:20 2003 +0000 -Unused variable in struct. + Missing declaration. ------------------------------------------------------------------------- -r1311 | guus | 2003-10-06 16:16:51 +0200 (ma, 06 okt 2003) | 2 lines +commit 1d7706a8506d8073def0965da809960c6ad8bf9a +Author: Guus Sliepen +Date: Wed Oct 8 11:34:55 2003 +0000 -Ethernet protocol types. + Update missing definitions, structs describing headers get __packed__ attribute. ------------------------------------------------------------------------- -r1310 | guus | 2003-10-06 15:57:12 +0200 (ma, 06 okt 2003) | 2 lines +commit 5b556c0971e847580b85268e57f0b29dbde5499c +Author: Guus Sliepen +Date: Wed Oct 8 11:33:54 2003 +0000 -const + Forgot to #include "xalloc.h" ------------------------------------------------------------------------- -r1309 | guus | 2003-10-06 15:49:57 +0200 (ma, 06 okt 2003) | 3 lines +commit ad39db95fecf760297b4e320ef2f6d6d9fdad605 +Author: Guus Sliepen +Date: Mon Oct 6 16:49:42 2003 +0000 -Copy structs from packets to the stack before using them, to prevent -alignment issues. + Make sure type of AF_UNKNOWN is sa_family_t. ------------------------------------------------------------------------- -r1307 | guus | 2003-10-01 11:14:01 +0200 (wo, 01 okt 2003) | 2 lines +commit 5900c07fab39d2833ea66429ad652ca49a91a508 +Author: Guus Sliepen +Date: Mon Oct 6 16:13:08 2003 +0000 -Better length checks. + PIDs are of type pid_t, and use %ld when reading/writing them to the pidfile. ------------------------------------------------------------------------- -r1306 | guus | 2003-09-25 12:34:16 +0200 (do, 25 sep 2003) | 3 lines +commit e898b930dcd0694a49dc8cdcf373e0fc125c9fde +Author: Guus Sliepen +Date: Mon Oct 6 16:05:30 2003 +0000 -Generate keys with 0x10001 as public exponent, which has less prime factors -than 0xFFFF. + Use CPPFLAGS, LDFLAGS and LIBS as appropiate. ------------------------------------------------------------------------- -r1305 | guus | 2003-09-23 22:59:01 +0200 (di, 23 sep 2003) | 2 lines +commit 6350334aa44f85e737c1eb0b55e0392766aa1e84 +Author: Guus Sliepen +Date: Mon Oct 6 14:41:45 2003 +0000 -Check for short packets from the tun/tap device and from other tinc daemons. + Don't confuse users with "Address family not supported" warnings. ------------------------------------------------------------------------- -r1304 | guus | 2003-09-09 17:47:59 +0200 (di, 09 sep 2003) | 2 lines +commit 0842998c0bd46855d198923acc2c13cff7430ffe +Author: Guus Sliepen +Date: Mon Oct 6 14:33:04 2003 +0000 -Update translations. + Unused variable in struct. ------------------------------------------------------------------------- -r1303 | guus | 2003-09-08 23:52:47 +0200 (ma, 08 sep 2003) | 2 lines +commit 77cb10dac0abbfa4389a7588f51797152d91ac22 +Author: Guus Sliepen +Date: Mon Oct 6 14:16:51 2003 +0000 -Remove pidfile when exitting. + Ethernet protocol types. ------------------------------------------------------------------------- -r1302 | guus | 2003-09-03 18:20:33 +0200 (wo, 03 sep 2003) | 2 lines +commit c97b8827ed34284535706e8017c962ff8f3a4383 +Author: Guus Sliepen +Date: Mon Oct 6 13:57:12 2003 +0000 -Prevent multiple inclusions. + const ------------------------------------------------------------------------- -r1301 | guus | 2003-08-28 23:05:11 +0200 (do, 28 aug 2003) | 2 lines +commit 60943122f7b3a5896ce64c9000e119931484c12c +Author: Guus Sliepen +Date: Mon Oct 6 13:49:57 2003 +0000 -We don't have to tell GCC how to cast. + Copy structs from packets to the stack before using them, to prevent + alignment issues. ------------------------------------------------------------------------- -r1300 | guus | 2003-08-28 17:27:12 +0200 (do, 28 aug 2003) | 3 lines +commit 5713fb07b3e831b78d8841d56a53c2a2698fe738 +Author: Guus Sliepen +Date: Wed Oct 1 09:43:01 2003 +0000 -Remove old edges from unreachable nodes to us. This prevents the hosts/NAME-up -script from being called twice in some situations. + Add description of new authentication scheme. ------------------------------------------------------------------------- -r1294 | guus | 2003-08-22 23:32:45 +0200 (vr, 22 aug 2003) | 2 lines +commit acbb9d6692614539260749c7b763eca5a6f81f07 +Author: Guus Sliepen +Date: Wed Oct 1 09:14:01 2003 +0000 -Add license exception from Markus Oberhumer. + Better length checks. ------------------------------------------------------------------------- -r1293 | guus | 2003-08-22 17:07:57 +0200 (vr, 22 aug 2003) | 2 lines +commit eeb97e3ef4eb9089851f7b71d5393df24313c993 +Author: Guus Sliepen +Date: Thu Sep 25 10:34:16 2003 +0000 -Remove debug message. + Generate keys with 0x10001 as public exponent, which has less prime factors + than 0xFFFF. ------------------------------------------------------------------------- -r1292 | guus | 2003-08-22 17:04:26 +0200 (vr, 22 aug 2003) | 2 lines +commit 288d956728ab4d4aabe9bc59b87991420dbda151 +Author: Guus Sliepen +Date: Tue Sep 23 20:59:01 2003 +0000 -When purging nodes, only delete them if nobody references them anymore. + Check for short packets from the tun/tap device and from other tinc daemons. ------------------------------------------------------------------------- -r1291 | guus | 2003-08-22 17:03:59 +0200 (vr, 22 aug 2003) | 2 lines +commit 4e80612ac0f38daa0f2280c293427c7f25dac278 +Author: Guus Sliepen +Date: Tue Sep 9 15:47:59 2003 +0000 -Add checkpoints. + Update translations. ------------------------------------------------------------------------- -r1290 | guus | 2003-08-22 17:05:01 +0200 (vr, 22 aug 2003) | 2 lines +commit cbf5a741aa2af937b3db606f0894990703f77bcb +Author: Guus Sliepen +Date: Mon Sep 8 21:52:47 2003 +0000 -Don't overwrite the first " when installing a service. + Remove pidfile when exitting. ------------------------------------------------------------------------- -r1289 | guus | 2003-08-22 13:18:42 +0200 (vr, 22 aug 2003) | 2 lines +commit 0dba26267c76982a422984b61a3196ed2cd2b04a +Author: Guus Sliepen +Date: Wed Sep 3 16:20:33 2003 +0000 -Allow tinc to handle unknown type addresses from other tinc daemons. + Prevent multiple inclusions. ------------------------------------------------------------------------- -r1288 | guus | 2003-08-17 14:05:08 +0200 (zo, 17 aug 2003) | 2 lines +commit 6c5f3d8b74ffea1522a727ef189a5ba65a939e07 +Author: Guus Sliepen +Date: Thu Aug 28 21:05:11 2003 +0000 -If we're not in main_loop() and the service is stopped, exit immediately. + We don't have to tell GCC how to cast. ------------------------------------------------------------------------- -r1287 | guus | 2003-08-17 14:04:35 +0200 (zo, 17 aug 2003) | 2 lines +commit 762cc2d2797d62ab593ea64d8ceeb4fe96be2a0d +Author: Guus Sliepen +Date: Thu Aug 28 15:27:12 2003 +0000 -Do what the SDK documentation tells. + Remove old edges from unreachable nodes to us. This prevents the hosts/NAME-up + script from being called twice in some situations. ------------------------------------------------------------------------- -r1286 | guus | 2003-08-17 14:03:40 +0200 (zo, 17 aug 2003) | 2 lines +commit a6dc69e7f30522bf885714f6b663960b6fbfff6a +Author: Guus Sliepen +Date: Wed Aug 27 13:58:29 2003 +0000 -Compilation fix. + Forgot to synchronise po/ directory... ------------------------------------------------------------------------- -r1285 | guus | 2003-08-17 11:04:00 +0200 (zo, 17 aug 2003) | 2 lines +commit 62349da6f2617c7250a77af6610344ec0dbfc4f2 +Author: Guus Sliepen +Date: Wed Aug 27 13:57:04 2003 +0000 -Use the event log under Windows. + Makevars file was accidentily removed. ------------------------------------------------------------------------- -r1284 | guus | 2003-08-17 11:03:30 +0200 (zo, 17 aug 2003) | 2 lines +commit dc3b7d47f3297e22161787a1d6e06205140cf0fb +Author: Guus Sliepen +Date: Wed Aug 27 13:47:52 2003 +0000 -Fix --logfile under Windows. + Some device.c files weren't synchronised. ------------------------------------------------------------------------- -r1283 | guus | 2003-08-17 10:32:39 +0200 (zo, 17 aug 2003) | 2 lines +commit 9e81a6ab5f50df4f5ca36d5303b91a8d5a0e753e +Author: Guus Sliepen +Date: Sun Aug 24 20:50:30 2003 +0000 -Fix fake getnameinfo() and check more arguments. + This will become 2.0. ------------------------------------------------------------------------- -r1282 | guus | 2003-08-16 14:40:01 +0200 (za, 16 aug 2003) | 2 lines +commit 013a2e159e42c46808ea8d0b6abd57525db30a50 +Author: Guus Sliepen +Date: Sun Aug 24 20:38:31 2003 +0000 -Don't getsockopt() SO_ERROR. We get the error from send()/recv() anyway. + Synchronise HEAD with CABAL branch. ------------------------------------------------------------------------- -r1281 | guus | 2003-08-16 14:11:11 +0200 (za, 16 aug 2003) | 2 lines +commit ffb55e6904426a31c03b56c3bd87bb60db0624c6 +Author: Guus Sliepen +Date: Fri Aug 22 21:32:45 2003 +0000 -stat() batch files under Windows. + Add license exception from Markus Oberhumer. ------------------------------------------------------------------------- -r1280 | guus | 2003-08-16 14:10:28 +0200 (za, 16 aug 2003) | 2 lines +commit 3e0b28b0c4d874934dde7b487a56cfacc956e3b4 +Author: Guus Sliepen +Date: Fri Aug 22 15:07:57 2003 +0000 -Simplify fake getname/addrinfo() functions, possibly fixing freeing a NULL pointer. + Remove debug message. ------------------------------------------------------------------------- -r1278 | guus | 2003-08-14 16:32:34 +0200 (do, 14 aug 2003) | 2 lines +commit 89c9f3ed8fddb316d0f9ef7de30bdc76fba39e41 +Author: Guus Sliepen +Date: Fri Aug 22 15:04:26 2003 +0000 -Update. + When purging nodes, only delete them if nobody references them anymore. ------------------------------------------------------------------------- -r1277 | guus | 2003-08-14 16:21:35 +0200 (do, 14 aug 2003) | 2 lines +commit 22dd23b650eb9b760bc68ab3a9227caf3b449140 +Author: Guus Sliepen +Date: Fri Aug 22 15:03:59 2003 +0000 -Fix permissions check for rsa_key.priv. + Add checkpoints. ------------------------------------------------------------------------- -r1276 | guus | 2003-08-12 16:48:13 +0200 (di, 12 aug 2003) | 2 lines +commit 570e7e9c615388cfba263c7a7c66cbc3d092d6e7 +Author: Guus Sliepen +Date: Fri Aug 22 15:05:01 2003 +0000 -Small fixes. + Don't overwrite the first " when installing a service. ------------------------------------------------------------------------- -r1275 | guus | 2003-08-12 14:35:53 +0200 (di, 12 aug 2003) | 2 lines +commit 72bdc05cb7e246e56ed21a25256d441c45fccca8 +Author: Guus Sliepen +Date: Fri Aug 22 11:18:42 2003 +0000 -Updated dutch translation. + Allow tinc to handle unknown type addresses from other tinc daemons. ------------------------------------------------------------------------- -r1274 | guus | 2003-08-10 15:35:05 +0200 (zo, 10 aug 2003) | 2 lines +commit 5ac4179df66747a7013a10d576c23531d2b4fc58 +Author: Guus Sliepen +Date: Sun Aug 17 12:05:08 2003 +0000 -Add a description for the Service control panel. + If we're not in main_loop() and the service is stopped, exit immediately. ------------------------------------------------------------------------- -r1273 | guus | 2003-08-09 02:53:22 +0200 (za, 09 aug 2003) | 2 lines +commit 46cfe6199449a86eb58abaeac45b4021ffa7e178 +Author: Guus Sliepen +Date: Sun Aug 17 12:04:35 2003 +0000 -Update documentation. + Do what the SDK documentation tells. ------------------------------------------------------------------------- -r1272 | guus | 2003-08-09 00:45:46 +0200 (za, 09 aug 2003) | 2 lines +commit 107448698fc078bbd4cdbacdfbf51298ddc9ea65 +Author: Guus Sliepen +Date: Sun Aug 17 12:03:40 2003 +0000 -Only system() needs script name quoted. + Compilation fix. ------------------------------------------------------------------------- -r1271 | guus | 2003-08-09 00:13:50 +0200 (za, 09 aug 2003) | 2 lines +commit 3112e6a863b4421eb1a0b32632b86c55e47f989e +Author: Guus Sliepen +Date: Sun Aug 17 09:04:00 2003 +0000 -Check for fchmod(). + Use the event log under Windows. ------------------------------------------------------------------------- -r1270 | guus | 2003-08-09 00:11:54 +0200 (za, 09 aug 2003) | 2 lines +commit 5e7c52610f8c8b9c38e437ef166a08372d5b8a61 +Author: Guus Sliepen +Date: Sun Aug 17 09:03:30 2003 +0000 -Simpler checking of permissions on private RSA key and other fixes. + Fix --logfile under Windows. ------------------------------------------------------------------------- -r1269 | guus | 2003-08-08 21:56:11 +0200 (vr, 08 aug 2003) | 2 lines +commit 2236e05e518c9e317d82c027596bea5228725214 +Author: Guus Sliepen +Date: Sun Aug 17 08:32:39 2003 +0000 -Small things. + Fix fake getnameinfo() and check more arguments. ------------------------------------------------------------------------- -r1268 | guus | 2003-08-08 21:49:47 +0200 (vr, 08 aug 2003) | 2 lines +commit f4e80cc5e0d1689bcdd828ac7f158bd634b7dd20 +Author: Guus Sliepen +Date: Sat Aug 16 12:40:01 2003 +0000 -Better error checking and reporting. + Don't getsockopt() SO_ERROR. We get the error from send()/recv() anyway. ------------------------------------------------------------------------- -r1267 | guus | 2003-08-08 21:45:21 +0200 (vr, 08 aug 2003) | 2 lines +commit fd40130eb6bbba34176d34936a01bb6a6f9121d4 +Author: Guus Sliepen +Date: Sat Aug 16 12:11:11 2003 +0000 -Under Windows, the installation directory can be found in the registry. + stat() batch files under Windows. ------------------------------------------------------------------------- -r1266 | guus | 2003-08-08 21:43:47 +0200 (vr, 08 aug 2003) | 2 lines +commit 03995ca52ee31ed505902a3c8c3d1119988c8497 +Author: Guus Sliepen +Date: Sat Aug 16 12:10:28 2003 +0000 -Quote when needed and don't try stuff that doesn't work under Windows. + Simplify fake getname/addrinfo() functions, possibly fixing freeing a NULL pointer. ------------------------------------------------------------------------- -r1265 | guus | 2003-08-08 21:42:35 +0200 (vr, 08 aug 2003) | 2 lines +commit dbfd6f284e0ff0aa04e6d6e62b902966912da516 +Author: Guus Sliepen +Date: Thu Aug 14 14:32:34 2003 +0000 -Log error first, try to close later. + Update. ------------------------------------------------------------------------- -r1264 | guus | 2003-08-08 21:39:41 +0200 (vr, 08 aug 2003) | 2 lines +commit 7ed25590257b6ed33dfa879d187a09b0d790794f +Author: Guus Sliepen +Date: Thu Aug 14 14:21:35 2003 +0000 -Better error messages under Windows. + Fix permissions check for rsa_key.priv. ------------------------------------------------------------------------- -r1263 | guus | 2003-08-08 19:20:12 +0200 (vr, 08 aug 2003) | 2 lines +commit 1f2670aab295dfd09c8c655611d2a5b820cb00fc +Author: Guus Sliepen +Date: Tue Aug 12 14:48:13 2003 +0000 -Typo. + Small fixes. ------------------------------------------------------------------------- -r1262 | guus | 2003-08-08 19:17:13 +0200 (vr, 08 aug 2003) | 2 lines +commit b038e8db376969e70f1315840428b8a14ec8420f +Author: Guus Sliepen +Date: Tue Aug 12 12:35:53 2003 +0000 -Readd quotes. + Updated dutch translation. ------------------------------------------------------------------------- -r1261 | guus | 2003-08-08 18:49:29 +0200 (vr, 08 aug 2003) | 2 lines +commit ae070b917066f612e9aba8611c7a5da88e19a51a +Author: Guus Sliepen +Date: Sun Aug 10 13:35:05 2003 +0000 -Make rule for sample-config.tar.gz. + Add a description for the Service control panel. ------------------------------------------------------------------------- -r1260 | guus | 2003-08-08 16:59:27 +0200 (vr, 08 aug 2003) | 2 lines +commit 9b579eb9ffdc1fd4a3d0cacb0728ec0796526bc5 +Author: Guus Sliepen +Date: Sat Aug 9 00:53:22 2003 +0000 -Allow empty lines in config files. + Update documentation. ------------------------------------------------------------------------- -r1259 | guus | 2003-08-08 16:48:33 +0200 (vr, 08 aug 2003) | 2 lines +commit 7eed829d288d0fdec2f31709a18ec420e489c2e4 +Author: Guus Sliepen +Date: Fri Aug 8 22:45:46 2003 +0000 -Simplify execute_script(). It will probably work under Windows as well. + Only system() needs script name quoted. ------------------------------------------------------------------------- -r1258 | guus | 2003-08-08 16:24:09 +0200 (vr, 08 aug 2003) | 2 lines +commit 91f65c277483b47343b1b64d0f4edd497a8045a3 +Author: Guus Sliepen +Date: Fri Aug 8 22:13:50 2003 +0000 -Correct error message when remote host closed connection. + Check for fchmod(). ------------------------------------------------------------------------- -r1257 | guus | 2003-08-08 16:07:12 +0200 (vr, 08 aug 2003) | 3 lines +commit 9bde92ce97d5503ff2d31dcc6f0648902580ec14 +Author: Guus Sliepen +Date: Fri Aug 8 22:11:54 2003 +0000 -Remove unused stuff from doc/. -Let configure update pathnames in documentation. + Simpler checking of permissions on private RSA key and other fixes. ------------------------------------------------------------------------- -r1253 | guus | 2003-08-08 14:55:05 +0200 (vr, 08 aug 2003) | 2 lines +commit 96f5d98fc299a53fcdad304a56eb3a77a2c229e7 +Author: Guus Sliepen +Date: Fri Aug 8 19:56:11 2003 +0000 -Tell windows to be patient. + Small things. ------------------------------------------------------------------------- -r1252 | guus | 2003-08-08 14:24:52 +0200 (vr, 08 aug 2003) | 2 lines +commit ef65a64443f740e3b22d9e903f764d9a58ce0ff0 +Author: Guus Sliepen +Date: Fri Aug 8 19:49:47 2003 +0000 -Windows uses backslashes... + Better error checking and reporting. ------------------------------------------------------------------------- -r1251 | guus | 2003-08-08 13:45:37 +0200 (vr, 08 aug 2003) | 2 lines +commit bb2f18a3fc8acb7802f30e06153def30eb97a994 +Author: Guus Sliepen +Date: Fri Aug 8 19:45:21 2003 +0000 -Sync CABAL branch with release-1_0 branch. + Under Windows, the installation directory can be found in the registry. ------------------------------------------------------------------------- -r1248 | guus | 2003-08-03 23:45:41 +0200 (zo, 03 aug 2003) | 2 lines +commit 7f05445047c6479b81b7d393543ff73a95ee0dc8 +Author: Guus Sliepen +Date: Fri Aug 8 19:43:47 2003 +0000 -Use our own port when connecting to ourself. + Quote when needed and don't try stuff that doesn't work under Windows. ------------------------------------------------------------------------- -r1247 | guus | 2003-08-03 23:45:13 +0200 (zo, 03 aug 2003) | 2 lines +commit b4c913aaa926d80a72aeb97459f84f992b65d1ed +Author: Guus Sliepen +Date: Fri Aug 8 19:42:35 2003 +0000 -Simplify translation + Log error first, try to close later. ------------------------------------------------------------------------- -r1246 | guus | 2003-08-03 23:43:19 +0200 (zo, 03 aug 2003) | 2 lines +commit b0825f36b7b5dade1693fdbddfec7eef3f5ed86f +Author: Guus Sliepen +Date: Fri Aug 8 19:39:41 2003 +0000 -Update dutch translation + Better error messages under Windows. ------------------------------------------------------------------------- -r1245 | guus | 2003-08-03 14:38:43 +0200 (zo, 03 aug 2003) | 2 lines +commit 6f3099595530280028f6ec3d0b310df523e75f98 +Author: Guus Sliepen +Date: Fri Aug 8 17:20:12 2003 +0000 -Remove newlines from log messages. + Typo. ------------------------------------------------------------------------- -r1244 | guus | 2003-08-03 14:38:18 +0200 (zo, 03 aug 2003) | 2 lines +commit 691907caaeb348dee3dbe8a85f3590241f2cc992 +Author: Guus Sliepen +Date: Fri Aug 8 17:17:13 2003 +0000 -Keep Windows happy. + Readd quotes. ------------------------------------------------------------------------- -r1243 | guus | 2003-08-03 14:37:55 +0200 (zo, 03 aug 2003) | 2 lines +commit f956a28147ec8596c9a51b0c1535bb4b8c87692c +Author: Guus Sliepen +Date: Fri Aug 8 16:49:29 2003 +0000 -Cygwin needs windows.h. + Make rule for sample-config.tar.gz. ------------------------------------------------------------------------- -r1242 | guus | 2003-08-03 11:55:20 +0200 (zo, 03 aug 2003) | 2 lines +commit 7e74e00d167da659ba6c3db3e8822008d27c081b +Author: Guus Sliepen +Date: Fri Aug 8 14:59:27 2003 +0000 -Old gcc compilers don't like declarations in the middle of a function. + Allow empty lines in config files. ------------------------------------------------------------------------- -r1241 | guus | 2003-08-03 11:08:52 +0200 (zo, 03 aug 2003) | 2 lines +commit 863349638beb1eaab09e2a3d537c20a7913aef30 +Author: Guus Sliepen +Date: Fri Aug 8 14:48:33 2003 +0000 -Clean up last part of main(). + Simplify execute_script(). It will probably work under Windows as well. ------------------------------------------------------------------------- -r1240 | guus | 2003-08-03 00:01:50 +0200 (zo, 03 aug 2003) | 2 lines +commit deba3ed900eb4453d27412606cecfaf89b5a5643 +Author: Guus Sliepen +Date: Fri Aug 8 14:24:09 2003 +0000 -Typo and another thing to think about. + Correct error message when remote host closed connection. ------------------------------------------------------------------------- -r1239 | guus | 2003-08-02 23:55:12 +0200 (za, 02 aug 2003) | 2 lines +commit 0c2256670fc0822cc5a86bca754186c50f943a1c +Author: Guus Sliepen +Date: Fri Aug 8 14:07:12 2003 +0000 -Explain how tinc detaches and how it is "killed" under Windows. + Remove unused stuff from doc/. + Let configure update pathnames in documentation. ------------------------------------------------------------------------- -r1238 | guus | 2003-08-02 23:39:11 +0200 (za, 02 aug 2003) | 2 lines +commit 070aee3be16b8d8078b049c5bb43dce7b18123df +Author: Guus Sliepen +Date: Fri Aug 8 12:55:05 2003 +0000 -Updated dutch translation. + Tell windows to be patient. ------------------------------------------------------------------------- -r1237 | guus | 2003-08-02 23:34:10 +0200 (za, 02 aug 2003) | 2 lines +commit adb68b9c2aa7ad72dd5c38b95c083c47599cb65a +Author: Guus Sliepen +Date: Fri Aug 8 12:24:52 2003 +0000 -Oops. + Windows uses backslashes... ------------------------------------------------------------------------- -r1236 | guus | 2003-08-02 23:33:52 +0200 (za, 02 aug 2003) | 2 lines +commit ef091d1ddb1f7ab5244db96841274dc769e85167 +Author: Guus Sliepen +Date: Fri Aug 8 11:45:37 2003 +0000 -Missing include. + Sync CABAL branch with release-1_0 branch. ------------------------------------------------------------------------- -r1235 | guus | 2003-08-02 23:33:19 +0200 (za, 02 aug 2003) | 2 lines +commit 5193a14ddea4c20ffc708dc629a2f91f1e4ccea3 +Author: Guus Sliepen +Date: Sun Aug 3 21:45:41 2003 +0000 -Cleanups and error messages. + Use our own port when connecting to ourself. ------------------------------------------------------------------------- -r1234 | guus | 2003-08-02 23:01:50 +0200 (za, 02 aug 2003) | 2 lines +commit 62a7fa9a7bfd1cd1592fd7c381ea28aac0ed7936 +Author: Guus Sliepen +Date: Sun Aug 3 21:45:13 2003 +0000 -Error messages. + Simplify translation ------------------------------------------------------------------------- -r1233 | guus | 2003-08-02 22:50:38 +0200 (za, 02 aug 2003) | 3 lines +commit 98f97da9d7d80b528d9a2b2f03f710cdd2b293d0 +Author: Guus Sliepen +Date: Sun Aug 3 21:43:19 2003 +0000 -Install tinc as a service under Windows (MinGW). Remove cleanup_and_exit(), -either exit() directly on errors or let main_loop() shutdown gracefully. + Update dutch translation ------------------------------------------------------------------------- -r1232 | guus | 2003-08-02 18:05:33 +0200 (za, 02 aug 2003) | 2 lines +commit e220187f484f3549df3ad3a04939b9a38051d1a0 +Author: Guus Sliepen +Date: Sun Aug 3 12:38:43 2003 +0000 -When compiling with MinGW, link with ws2_32. + Remove newlines from log messages. ------------------------------------------------------------------------- -r1231 | guus | 2003-08-02 17:32:57 +0200 (za, 02 aug 2003) | 2 lines +commit 3671ed806d7371fb6b14a5909451b20e54a1b14a +Author: Guus Sliepen +Date: Sun Aug 3 12:38:18 2003 +0000 -Windows has no symbolic links as we know it. + Keep Windows happy. ------------------------------------------------------------------------- -r1230 | guus | 2003-08-02 17:29:06 +0200 (za, 02 aug 2003) | 2 lines +commit 7bed2a7099fc7359f6ec24e5f2d7050c7d63b6ac +Author: Guus Sliepen +Date: Sun Aug 3 12:37:55 2003 +0000 -Oops. + Cygwin needs windows.h. ------------------------------------------------------------------------- -r1229 | guus | 2003-08-02 17:27:24 +0200 (za, 02 aug 2003) | 2 lines +commit fa9c00733e4b793691bf5a068ff7f2f391854fb4 +Author: Guus Sliepen +Date: Sun Aug 3 09:55:20 2003 +0000 -Allow whitespace in values. + Old gcc compilers don't like declarations in the middle of a function. ------------------------------------------------------------------------- -r1228 | guus | 2003-08-02 17:13:08 +0200 (za, 02 aug 2003) | 2 lines +commit a65011b3c54cd4ddc66f20909ca0e495de0d6eb0 +Author: Guus Sliepen +Date: Sun Aug 3 09:08:52 2003 +0000 -Prevent system headers from including our own headers. + Clean up last part of main(). ------------------------------------------------------------------------- -r1227 | guus | 2003-08-01 10:18:22 +0200 (vr, 01 aug 2003) | 2 lines +commit e20ac7b52da8e3f7da292836c6e2551fc9f64617 +Author: Guus Sliepen +Date: Sat Aug 2 22:01:50 2003 +0000 -Wrong function... + Typo and another thing to think about. ------------------------------------------------------------------------- -r1226 | guus | 2003-07-31 16:24:19 +0200 (do, 31 jul 2003) | 2 lines +commit 92938c07b17fdd30f4e7f9ae1b884b05c7aa312c +Author: Guus Sliepen +Date: Sat Aug 2 21:55:12 2003 +0000 -Woops! + Explain how tinc detaches and how it is "killed" under Windows. ------------------------------------------------------------------------- -r1225 | guus | 2003-07-31 15:18:34 +0200 (do, 31 jul 2003) | 2 lines +commit 8a1969bc8319761e3821fc76a7c2f7037ffb8850 +Author: Guus Sliepen +Date: Sat Aug 2 21:39:11 2003 +0000 -No easy way to properly detect header files... + Updated dutch translation. ------------------------------------------------------------------------- -r1224 | guus | 2003-07-31 13:31:51 +0200 (do, 31 jul 2003) | 2 lines +commit f605ec47bed26362e24ffacf71c7ae5aeed3c230 +Author: Guus Sliepen +Date: Sat Aug 2 21:34:10 2003 +0000 -Remove forgotten braces. + Oops. ------------------------------------------------------------------------- -r1223 | guus | 2003-07-31 13:20:32 +0200 (do, 31 jul 2003) | 2 lines +commit e6e32814584f82ee61f658a71cb435bbb491bd39 +Author: Guus Sliepen +Date: Sat Aug 2 21:33:52 2003 +0000 -Wrong argument. + Missing include. ------------------------------------------------------------------------- -r1222 | guus | 2003-07-31 13:17:39 +0200 (do, 31 jul 2003) | 2 lines +commit c044d12dfd54c033bc5ad9fbf9f889724762f76c +Author: Guus Sliepen +Date: Sat Aug 2 21:33:19 2003 +0000 -Check if the compiler knows about the __malloc__ attribute. + Cleanups and error messages. ------------------------------------------------------------------------- -r1220 | guus | 2003-07-30 23:52:41 +0200 (wo, 30 jul 2003) | 2 lines +commit 3fd96ebec7e44a0a7288c60da1cdec2d4fe03e8c +Author: Guus Sliepen +Date: Sat Aug 2 21:01:50 2003 +0000 -Prevent definitions from messing up attributes. + Error messages. ------------------------------------------------------------------------- -r1219 | guus | 2003-07-30 18:00:59 +0200 (wo, 30 jul 2003) | 2 lines +commit f08fc359a0b7f638e73a8f866119b016b7dff8de +Author: Guus Sliepen +Date: Sat Aug 2 20:50:38 2003 +0000 -Replacement for stdbool.h + Install tinc as a service under Windows (MinGW). Remove cleanup_and_exit(), + either exit() directly on errors or let main_loop() shutdown gracefully. ------------------------------------------------------------------------- -r1218 | guus | 2003-07-30 13:50:45 +0200 (wo, 30 jul 2003) | 3 lines +commit 7c34122af7ed4667748ceae4966bd5b519ac8ad7 +Author: Guus Sliepen +Date: Sat Aug 2 16:05:33 2003 +0000 -No C99 initialisers, gcc 2.95.3 doesn't like it. -Also make sure getopt.h is included. + When compiling with MinGW, link with ws2_32. ------------------------------------------------------------------------- -r1217 | guus | 2003-07-30 11:45:21 +0200 (wo, 30 jul 2003) | 2 lines +commit 9a491a10eee55b243dd1030ee9016ec510908a10 +Author: Guus Sliepen +Date: Sat Aug 2 15:32:57 2003 +0000 -Remove doc/es/ and src/device.c from the distribution. + Windows has no symbolic links as we know it. ------------------------------------------------------------------------- -r1216 | guus | 2003-07-30 11:22:29 +0200 (wo, 30 jul 2003) | 2 lines +commit 9c2d5d9f9212dee5ee988f4824e5e4afedb7a2dd +Author: Guus Sliepen +Date: Sat Aug 2 15:29:06 2003 +0000 -Update documentation and remove stuff that's too outdated. + Oops. ------------------------------------------------------------------------- -r1215 | guus | 2003-07-30 01:21:01 +0200 (wo, 30 jul 2003) | 2 lines +commit c7bf64c7946ece3e1a6a7cdd7bce00045bddb9cd +Author: Guus Sliepen +Date: Sat Aug 2 15:27:24 2003 +0000 -Cleanups. + Allow whitespace in values. ------------------------------------------------------------------------- -r1214 | guus | 2003-07-30 00:59:01 +0200 (wo, 30 jul 2003) | 2 lines +commit b79e55b183898911e2c2b7b151b281aef8d474e1 +Author: Guus Sliepen +Date: Sat Aug 2 15:13:08 2003 +0000 -Native Windows support. + Prevent system headers from including our own headers. ------------------------------------------------------------------------- -r1213 | guus | 2003-07-29 14:38:49 +0200 (di, 29 jul 2003) | 2 lines +commit 998ac634d456567e7caf99fe879d4ef1602f36bf +Author: Guus Sliepen +Date: Fri Aug 1 08:18:22 2003 +0000 -Make sure (at least) the MinGW device driver works. + Wrong function... ------------------------------------------------------------------------- -r1212 | guus | 2003-07-29 14:18:35 +0200 (di, 29 jul 2003) | 2 lines +commit 2531ff59b73af3a6de85fdc33d744758a6ab9449 +Author: Guus Sliepen +Date: Thu Jul 31 14:24:19 2003 +0000 -Make sure it works. + Woops! ------------------------------------------------------------------------- -r1211 | guus | 2003-07-29 13:50:39 +0200 (di, 29 jul 2003) | 2 lines +commit 1fe56637874a1e93882a2ca6ffb8c50a773f80e4 +Author: Guus Sliepen +Date: Thu Jul 31 13:18:34 2003 +0000 -Update configure scripts. + No easy way to properly detect header files... ------------------------------------------------------------------------- -r1210 | guus | 2003-07-29 13:06:23 +0200 (di, 29 jul 2003) | 3 lines +commit 8eca27e863d9cb139a1e4039f63aaac3c9afc3c6 +Author: Guus Sliepen +Date: Thu Jul 31 11:31:51 2003 +0000 -Update dutch translation and make sure all device drivers are included in -the translation and distribution. + Remove forgotten braces. ------------------------------------------------------------------------- -r1209 | guus | 2003-07-29 12:50:15 +0200 (di, 29 jul 2003) | 2 lines +commit 5c29d066688691dd1664597ba1c76195634f06c0 +Author: Guus Sliepen +Date: Thu Jul 31 11:20:32 2003 +0000 -Fix compile errors and warnings. + Wrong argument. ------------------------------------------------------------------------- -r1208 | guus | 2003-07-29 00:06:09 +0200 (di, 29 jul 2003) | 2 lines +commit da3078c63a3b658573f6e2f986f69ed4d7993b3a +Author: Guus Sliepen +Date: Thu Jul 31 11:17:39 2003 +0000 -More checks for missing functions. + Check if the compiler knows about the __malloc__ attribute. ------------------------------------------------------------------------- -r1207 | guus | 2003-07-28 23:54:03 +0200 (ma, 28 jul 2003) | 2 lines +commit d798b8b3d832f8c69769e08cfd64a4d8355faf0e +Author: Guus Sliepen +Date: Wed Jul 30 21:52:41 2003 +0000 -More generic handling of tap device under Windows. + Prevent definitions from messing up attributes. ------------------------------------------------------------------------- -r1206 | guus | 2003-07-24 14:08:16 +0200 (do, 24 jul 2003) | 2 lines +commit 2edc764a333764e7e5c4d3420131c13e9c81ecf7 +Author: Guus Sliepen +Date: Wed Jul 30 16:00:59 2003 +0000 -Sprinkle around a lot of const and some C99 initialisers. + Replacement for stdbool.h ------------------------------------------------------------------------- -r1205 | guus | 2003-07-24 00:17:31 +0200 (do, 24 jul 2003) | 2 lines +commit fcbe29bc4cc67530581a36cf1a3a1445c741b8e5 +Author: Guus Sliepen +Date: Wed Jul 30 11:50:45 2003 +0000 -Don't initialise a CIPHER_CTX if cipher == NULL. + No C99 initialisers, gcc 2.95.3 doesn't like it. + Also make sure getopt.h is included. ------------------------------------------------------------------------- -r1204 | guus | 2003-07-22 23:13:23 +0200 (di, 22 jul 2003) | 2 lines +commit de223b51b94c58d1674f1ef56e9d485ff48d366d +Author: Guus Sliepen +Date: Wed Jul 30 09:45:21 2003 +0000 -Run setup_device() after parsing configuration but before claiming we're ready. + Remove doc/es/ and src/device.c from the distribution. ------------------------------------------------------------------------- -r1203 | guus | 2003-07-22 22:55:21 +0200 (di, 22 jul 2003) | 2 lines +commit 63568bb6bca20b4d2b2068a6367084a273eabac8 +Author: Guus Sliepen +Date: Wed Jul 30 09:22:29 2003 +0000 -Use bools and enums where appropriate. + Update documentation and remove stuff that's too outdated. ------------------------------------------------------------------------- -r1202 | guus | 2003-07-22 14:58:34 +0200 (di, 22 jul 2003) | 2 lines +commit 2ed154e73192d5e162544bc570abbb3a1df3ec83 +Author: Guus Sliepen +Date: Tue Jul 29 23:21:01 2003 +0000 -Option to specify pidfile location. + Cleanups. ------------------------------------------------------------------------- -r1201 | guus | 2003-07-21 21:58:58 +0200 (ma, 21 jul 2003) | 2 lines +commit 721e4caee0f7c6e003c297c95fb6d93bd4102219 +Author: Guus Sliepen +Date: Tue Jul 29 22:59:01 2003 +0000 -Add section about configuring Cygwin and CIPE on Windows. + Native Windows support. ------------------------------------------------------------------------- -r1200 | guus | 2003-07-21 17:51:00 +0200 (ma, 21 jul 2003) | 2 lines +commit 586f15ed20682413d1bddbb4518dd2714c96b255 +Author: Guus Sliepen +Date: Tue Jul 29 12:38:49 2003 +0000 -Copy cygwin driver to mingw directory. It doesn't work (yet). + Make sure (at least) the MinGW device driver works. ------------------------------------------------------------------------- -r1198 | guus | 2003-07-21 16:47:43 +0200 (ma, 21 jul 2003) | 2 lines +commit 6f7cce69479f9b2796d81f458bf836287b74462e +Author: Guus Sliepen +Date: Tue Jul 29 12:18:35 2003 +0000 -Use functions from logger.c + Make sure it works. ------------------------------------------------------------------------- -r1197 | guus | 2003-07-21 15:18:44 +0200 (ma, 21 jul 2003) | 2 lines +commit 4370b98bb1dfa9eb1e400549cb6fcb6711aa1b29 +Author: Guus Sliepen +Date: Tue Jul 29 11:50:39 2003 +0000 -Check for sys/mman.h. + Update configure scripts. ------------------------------------------------------------------------- -r1196 | guus | 2003-07-21 15:15:36 +0200 (ma, 21 jul 2003) | 2 lines +commit ae50b0077e27c4c4d81a98da46c66865ffa069be +Author: Guus Sliepen +Date: Tue Jul 29 11:06:23 2003 +0000 -Oops. + Update dutch translation and make sure all device drivers are included in + the translation and distribution. ------------------------------------------------------------------------- -r1195 | guus | 2003-07-21 15:14:02 +0200 (ma, 21 jul 2003) | 2 lines +commit 714fb32d0377ed9f5643ed8f0bd914843d12266b +Author: Guus Sliepen +Date: Tue Jul 29 10:50:15 2003 +0000 -Be consistent. + Fix compile errors and warnings. ------------------------------------------------------------------------- -r1194 | guus | 2003-07-18 16:10:27 +0200 (vr, 18 jul 2003) | 2 lines +commit 0e945413315c9d15a3eb013fa3731dd978a8c7b8 +Author: Guus Sliepen +Date: Mon Jul 28 22:06:09 2003 +0000 -No UNIX style permissions under Windows. + More checks for missing functions. ------------------------------------------------------------------------- -r1193 | guus | 2003-07-18 16:09:47 +0200 (vr, 18 jul 2003) | 2 lines +commit c15e8a96bf7e45adf750b7a36b0e8446ea049468 +Author: Guus Sliepen +Date: Mon Jul 28 21:54:03 2003 +0000 -Oops. + More generic handling of tap device under Windows. ------------------------------------------------------------------------- -r1192 | guus | 2003-07-18 15:45:06 +0200 (vr, 18 jul 2003) | 3 lines +commit 83263b74460656ba557fd9bb84dc27258549e9cd +Author: Guus Sliepen +Date: Thu Jul 24 12:08:16 2003 +0000 -Use iface instead of interface because it might already be declared in -system header files. + Sprinkle around a lot of const and some C99 initialisers. ------------------------------------------------------------------------- -r1191 | guus | 2003-07-18 15:42:35 +0200 (vr, 18 jul 2003) | 2 lines +commit 5cb147135184e3748c6f5e6e6203d22ab9f904f8 +Author: Guus Sliepen +Date: Wed Jul 23 22:17:31 2003 +0000 -Check for ethernet/ipv4/ipv6 related structures. + Don't initialise a CIPHER_CTX if cipher == NULL. ------------------------------------------------------------------------- -r1190 | guus | 2003-07-18 15:41:37 +0200 (vr, 18 jul 2003) | 2 lines +commit 4aadb9500d9198f9c271deb048a2d36000bfae34 +Author: Guus Sliepen +Date: Tue Jul 22 21:13:23 2003 +0000 -Update all device.c files. + Run setup_device() after parsing configuration but before claiming we're ready. ------------------------------------------------------------------------- -r1189 | guus | 2003-07-18 14:21:03 +0200 (vr, 18 jul 2003) | 2 lines +commit eefa28059ab989c915a7d95fb4ae728abd7ce713 +Author: Guus Sliepen +Date: Tue Jul 22 20:55:21 2003 +0000 -Remove all #ifndefs from route.c + Use bools and enums where appropriate. ------------------------------------------------------------------------- -r1188 | guus | 2003-07-18 14:16:24 +0200 (vr, 18 jul 2003) | 2 lines +commit 471308e1636e7a06e1d9ebc98e82b1c0c5150dde +Author: Guus Sliepen +Date: Tue Jul 22 12:58:34 2003 +0000 -Even more missing definitions. + Option to specify pidfile location. ------------------------------------------------------------------------- -r1185 | guus | 2003-07-17 17:06:27 +0200 (do, 17 jul 2003) | 3 lines +commit c96900f378966ca1be96ddb1c43f855c74083b70 +Author: Guus Sliepen +Date: Mon Jul 21 19:58:58 2003 +0000 -Big header file cleanup: everything that has to do with standard system -libraries is moved to system.h. + Add section about configuring Cygwin and CIPE on Windows. ------------------------------------------------------------------------- -r1184 | guus | 2003-07-15 18:38:18 +0200 (di, 15 jul 2003) | 2 lines +commit bad82522ecfc1f3c72c600cbca6e8fa7e950c3bf +Author: Guus Sliepen +Date: Mon Jul 21 15:51:00 2003 +0000 -Windows headers declare a struct interface somewhere. + Copy cygwin driver to mingw directory. It doesn't work (yet). ------------------------------------------------------------------------- -r1183 | guus | 2003-07-15 18:27:39 +0200 (di, 15 jul 2003) | 2 lines +commit e169244e4b10dbcc1910c0f7fd811304d5b1a5a5 +Author: Guus Sliepen +Date: Mon Jul 21 14:47:43 2003 +0000 -Make use of the CIPE driver. Woohoo, tinc for Windows! + Use functions from logger.c ------------------------------------------------------------------------- -r1182 | guus | 2003-07-15 18:26:18 +0200 (di, 15 jul 2003) | 2 lines +commit 2f2defc4525befd5b5cb69d03b7887db35e9e46c +Author: Guus Sliepen +Date: Mon Jul 21 13:18:44 2003 +0000 -Export mymac. + Check for sys/mman.h. ------------------------------------------------------------------------- -r1181 | guus | 2003-07-12 22:24:04 +0200 (za, 12 jul 2003) | 2 lines +commit 64fd25aa6b794bb1d957b50d48705f30ed47c878 +Author: Guus Sliepen +Date: Mon Jul 21 13:15:36 2003 +0000 -Format string checking for logger(). + Oops. ------------------------------------------------------------------------- -r1180 | guus | 2003-07-12 22:19:22 +0200 (za, 12 jul 2003) | 2 lines +commit c1e8152f4fe5e4557784d8411e50006d461b8786 +Author: Guus Sliepen +Date: Mon Jul 21 13:14:02 2003 +0000 -Removing distribution specific files from CVS. + Be consistent. ------------------------------------------------------------------------- -r1179 | guus | 2003-07-12 19:48:38 +0200 (za, 12 jul 2003) | 2 lines +commit b657f0519456d05bcea5742017165793f79e56df +Author: Guus Sliepen +Date: Fri Jul 18 14:10:27 2003 +0000 -Update copyrights. + No UNIX style permissions under Windows. ------------------------------------------------------------------------- -r1178 | guus | 2003-07-12 19:41:48 +0200 (za, 12 jul 2003) | 2 lines +commit 38aa0319ef79124e59b587e6d55f37a79a9d847c +Author: Guus Sliepen +Date: Fri Jul 18 14:09:47 2003 +0000 -Simplify logging, update copyrights and some minor cleanups. + Oops. ------------------------------------------------------------------------- -r1177 | guus | 2003-07-11 18:13:00 +0200 (vr, 11 jul 2003) | 3 lines +commit 123bb765d10453fdccbe363a02e3042c588729cc +Author: Guus Sliepen +Date: Fri Jul 18 13:45:06 2003 +0000 -More missing IPv6 definitions and autoconf checks to make sure it compiles -under Solaris 2.6. + Use iface instead of interface because it might already be declared in + system header files. ------------------------------------------------------------------------- -r1176 | guus | 2003-07-07 13:50:52 +0200 (ma, 07 jul 2003) | 2 lines +commit 96ee04b678143defa1040f2defdd3424efedea11 +Author: Guus Sliepen +Date: Fri Jul 18 13:42:35 2003 +0000 -More missing definitions. + Check for ethernet/ipv4/ipv6 related structures. ------------------------------------------------------------------------- -r1175 | guus | 2003-07-07 13:13:31 +0200 (ma, 07 jul 2003) | 2 lines +commit 00ddbf5723511d80fbd2522fc503bd409dc6189a +Author: Guus Sliepen +Date: Fri Jul 18 13:41:37 2003 +0000 -Actually add ipv6.h. + Update all device.c files. ------------------------------------------------------------------------- -r1174 | guus | 2003-07-07 13:11:33 +0200 (ma, 07 jul 2003) | 2 lines +commit 271d3537fed28b3e76cf0e76082b44c8771ac5da +Author: Guus Sliepen +Date: Fri Jul 18 12:21:03 2003 +0000 -Provide all missing IPv6 definitions in lib/ipv6.h. + Remove all #ifndefs from route.c ------------------------------------------------------------------------- -r1172 | guus | 2003-07-07 01:16:29 +0200 (ma, 07 jul 2003) | 2 lines +commit b0a4f7b5551cae6fb5af2eb4bcb0dfb3443f7d89 +Author: Guus Sliepen +Date: Fri Jul 18 12:16:24 2003 +0000 -Sprinkling the source with static and attributes. + Even more missing definitions. ------------------------------------------------------------------------- -r1171 | guus | 2003-07-07 00:11:37 +0200 (ma, 07 jul 2003) | 3 lines +commit e449d94caef963809d417f16497f6f978e10d731 +Author: Guus Sliepen +Date: Thu Jul 17 15:06:27 2003 +0000 -Define logger(), cleans up source code and allows us to write log entries -to a separate file. + Big header file cleanup: everything that has to do with standard system + libraries is moved to system.h. ------------------------------------------------------------------------- -r1168 | guus | 2003-07-06 19:49:49 +0200 (zo, 06 jul 2003) | 2 lines +commit 47721be760c495ec13d68181bc03b151ffc1399c +Author: Guus Sliepen +Date: Tue Jul 15 16:38:18 2003 +0000 -Check for IPv6 header files. + Windows headers declare a struct interface somewhere. ------------------------------------------------------------------------- -r1167 | guus | 2003-07-06 19:15:25 +0200 (zo, 06 jul 2003) | 4 lines +commit 4c52febc57f2e34f5a187f0e57782903fe1eb95e +Author: Guus Sliepen +Date: Tue Jul 15 16:27:39 2003 +0000 -- simplify configure.in -- drop support for OpenSSL < 0.9.7 -- add some missing definitions/includes + Make use of the CIPE driver. Woohoo, tinc for Windows! ------------------------------------------------------------------------- -r1166 | guus | 2003-06-25 22:55:05 +0200 (wo, 25 jun 2003) | 3 lines +commit d26a4af4561ce4236b8224919cf4f3636f57b4c1 +Author: Guus Sliepen +Date: Tue Jul 15 16:26:18 2003 +0000 -This subtle pointer arithmetic thingy is (I'm very sure of it) the cause -of the lingering connections problem. Hopefully it is fixed now... + Export mymac. ------------------------------------------------------------------------- -r1165 | guus | 2003-06-25 22:52:59 +0200 (wo, 25 jun 2003) | 2 lines +commit 784db4e70d2573468c82ff5dfee723b77a20322f +Author: Guus Sliepen +Date: Sat Jul 12 20:24:04 2003 +0000 -Really make tinc default to any addressfamily. + Format string checking for logger(). ------------------------------------------------------------------------- -r1164 | guus | 2003-06-12 13:08:40 +0200 (do, 12 jun 2003) | 2 lines +commit a438ac911e7e60e54d7d1fc4f84373fab7e055af +Author: Guus Sliepen +Date: Sat Jul 12 20:19:22 2003 +0000 -There are two lzo compression levels. + Removing distribution specific files from CVS. ------------------------------------------------------------------------- -r1163 | guus | 2003-06-11 22:36:36 +0200 (wo, 11 jun 2003) | 2 lines +commit 085d33e6265e139bb08cdfda3d7498993190d187 +Author: Guus Sliepen +Date: Sat Jul 12 17:48:38 2003 +0000 -Typo and conversion to UTF-8. + Update copyrights. ------------------------------------------------------------------------- -r1162 | guus | 2003-06-11 22:19:46 +0200 (wo, 11 jun 2003) | 2 lines +commit 5db596c6844169f1eb5f804b72abe99d067aaa5a +Author: Guus Sliepen +Date: Sat Jul 12 17:41:48 2003 +0000 -Update dutch translation. + Simplify logging, update copyrights and some minor cleanups. ------------------------------------------------------------------------- -r1161 | guus | 2003-06-11 22:18:48 +0200 (wo, 11 jun 2003) | 2 lines +commit 2a7f11c0e90f5f0465bbc3c75de715454066ff72 +Author: Guus Sliepen +Date: Fri Jul 11 16:13:00 2003 +0000 -Update documentation. + More missing IPv6 definitions and autoconf checks to make sure it compiles + under Solaris 2.6. ------------------------------------------------------------------------- -r1160 | guus | 2003-06-11 21:40:43 +0200 (wo, 11 jun 2003) | 2 lines +commit 71f8124ea49f2a0e00e0cedbb1b76e49e9f1425d +Author: Guus Sliepen +Date: Mon Jul 7 11:50:52 2003 +0000 -More braces to make gcc happy. + More missing definitions. ------------------------------------------------------------------------- -r1159 | guus | 2003-06-11 21:39:02 +0200 (wo, 11 jun 2003) | 2 lines +commit a88f1edf297152580a7729c6f3d274ba2bff7360 +Author: Guus Sliepen +Date: Mon Jul 7 11:13:31 2003 +0000 -Fixes from Wessel Danker's libavl. + Actually add ipv6.h. ------------------------------------------------------------------------- -r1158 | guus | 2003-06-11 21:28:38 +0200 (wo, 11 jun 2003) | 2 lines +commit 30c0381d71d333a99f6c83ff9d03ef4a0857f423 +Author: Guus Sliepen +Date: Mon Jul 7 11:11:33 2003 +0000 -Remove mymac stuff from device.c. + Provide all missing IPv6 definitions in lib/ipv6.h. ------------------------------------------------------------------------- -r1157 | guus | 2003-06-11 21:27:35 +0200 (wo, 11 jun 2003) | 2 lines +commit 1401faf608e1c8af0d0754e545b0ec79d2bd5d93 +Author: Guus Sliepen +Date: Sun Jul 6 23:16:29 2003 +0000 -AddressFamily is "any" by default. + Sprinkling the source with static and attributes. ------------------------------------------------------------------------- -r1156 | guus | 2003-06-11 21:09:52 +0200 (wo, 11 jun 2003) | 3 lines +commit 0b9175e998c2180e5d73ef3d644a49d620c68cad +Author: Guus Sliepen +Date: Sun Jul 6 22:11:37 2003 +0000 -If we have a Linux tun/tap device and we are in router mode, open the device -in tun mode. + Define logger(), cleans up source code and allows us to write log entries + to a separate file. ------------------------------------------------------------------------- -r1155 | guus | 2003-06-11 21:07:56 +0200 (wo, 11 jun 2003) | 2 lines +commit 868104703003605711582c984b57f8933bf361ee +Author: Guus Sliepen +Date: Sun Jul 6 17:49:49 2003 +0000 -Call make_names() before doing anything else. + Check for IPv6 header files. ------------------------------------------------------------------------- -r1154 | guus | 2003-06-07 15:18:32 +0200 (za, 07 jun 2003) | 2 lines +commit 81f5713ab71944d51703653eab7f364fba0c482e +Author: Guus Sliepen +Date: Sun Jul 6 17:15:25 2003 +0000 -Fix warning and add missing checks for LZO library. + - simplify configure.in + - drop support for OpenSSL < 0.9.7 + - add some missing definitions/includes ------------------------------------------------------------------------- -r1152 | guus | 2003-05-18 00:12:52 +0200 (zo, 18 mei 2003) | 2 lines +commit 6c7172d694dcb80e538518282b6c4bd51818f1d2 +Author: Guus Sliepen +Date: Wed Jun 25 20:55:05 2003 +0000 -Fix links. + This subtle pointer arithmetic thingy is (I'm very sure of it) the cause + of the lingering connections problem. Hopefully it is fixed now... ------------------------------------------------------------------------- -r1151 | guus | 2003-05-07 13:21:58 +0200 (wo, 07 mei 2003) | 2 lines +commit 9528a63c35da77ba5b825068aeffbc5587816dd5 +Author: Guus Sliepen +Date: Wed Jun 25 20:52:59 2003 +0000 -Small fixes. + Really make tinc default to any addressfamily. ------------------------------------------------------------------------- -r1150 | guus | 2003-05-07 01:14:45 +0200 (wo, 07 mei 2003) | 2 lines +commit 8bfa554af97ee0694919b9f5b78ada89c6af62f5 +Author: Guus Sliepen +Date: Thu Jun 12 11:08:40 2003 +0000 -Small fixes to make LZO compression work. + There are two lzo compression levels. ------------------------------------------------------------------------- -r1149 | guus | 2003-05-06 23:13:18 +0200 (di, 06 mei 2003) | 4 lines +commit c3593491d44e8e8f239bb297f5d5f6541d581b78 +Author: Guus Sliepen +Date: Wed Jun 11 20:36:36 2003 +0000 -- Per-node EVP_CIPHER_CTX to avoid initialisation overhead. -- LZO compression, thanks to Teemu Kiviniemi. -- Updated dutch translation. + Typo and conversion to UTF-8. ------------------------------------------------------------------------- -r1148 | guus | 2003-04-19 13:12:45 +0200 (za, 19 apr 2003) | 2 lines +commit 636e650261712e3687048fe19987fd50ce84b093 +Author: Guus Sliepen +Date: Wed Jun 11 20:19:46 2003 +0000 -Make sure outgoing_t is completely freed. + Update dutch translation. ------------------------------------------------------------------------- -r1147 | guus | 2003-04-18 23:18:36 +0200 (vr, 18 apr 2003) | 2 lines +commit 9279b3c69982b066e2aaea4e444892b51332881a +Author: Guus Sliepen +Date: Wed Jun 11 20:18:48 2003 +0000 -Better handling of late packets. + Update documentation. ------------------------------------------------------------------------- -r1146 | guus | 2003-04-03 13:43:17 +0200 (do, 03 apr 2003) | 4 lines +commit 0a9aef2da749f7b7d1ca183daad88f6433579b9f +Author: Guus Sliepen +Date: Wed Jun 11 19:40:43 2003 +0000 -HUP signal now closes connections to hosts if their host config file is -gone or changed. The tinc.conf file is reread for changes in the ConnectTo -lines. + More braces to make gcc happy. ------------------------------------------------------------------------- -r1145 | guus | 2003-03-29 23:11:22 +0100 (za, 29 mrt 2003) | 2 lines +commit cf63cbef2bcb6a1f21ded439cbb09842581b9020 +Author: Guus Sliepen +Date: Wed Jun 11 19:39:02 2003 +0000 -Checksums must also work for uneven number of bytes. + Fixes from Wessel Danker's libavl. ------------------------------------------------------------------------- -r1144 | guus | 2003-03-29 22:58:35 +0100 (za, 29 mrt 2003) | 2 lines +commit 12de5a8eedd985f4732e88de6185f77a8244612c +Author: Guus Sliepen +Date: Wed Jun 11 19:28:38 2003 +0000 -Don't copy more than necessary. + Remove mymac stuff from device.c. ------------------------------------------------------------------------- -r1143 | guus | 2003-03-29 22:51:21 +0100 (za, 29 mrt 2003) | 4 lines +commit 31f17d43346a9175aec7c29ce41c71b1d08f725e +Author: Guus Sliepen +Date: Wed Jun 11 19:27:35 2003 +0000 -- Speed up checksumming -- If a destination is not found in the subnet list or the destination node - is unreachable, respond with an appropiate ICMP message. + AddressFamily is "any" by default. ------------------------------------------------------------------------- -r1142 | guus | 2003-03-28 14:41:49 +0100 (vr, 28 mrt 2003) | 3 lines +commit 451800eda87e886021fabd1888e486c51e97902a +Author: Guus Sliepen +Date: Wed Jun 11 19:09:52 2003 +0000 -- Avoid memory leak caused by OpenSSL 0.9.7a. -- Disable RSA_blinding_on() because it segfaults. + If we have a Linux tun/tap device and we are in router mode, open the device + in tun mode. ------------------------------------------------------------------------- -r1141 | guus | 2003-03-19 12:45:05 +0100 (wo, 19 mrt 2003) | 2 lines +commit 9e02a3d5631b687833e4cdcde18cda66e38138fc +Author: Guus Sliepen +Date: Wed Jun 11 19:07:56 2003 +0000 -Typo. + Call make_names() before doing anything else. ------------------------------------------------------------------------- -r1140 | guus | 2003-03-19 12:43:42 +0100 (wo, 19 mrt 2003) | 2 lines +commit 4b0e5a03fe89529ebe5d471a82c29c153a12116b +Author: Guus Sliepen +Date: Sat Jun 7 13:18:32 2003 +0000 -Make sure send_meta() writes everything. + Fix warning and add missing checks for LZO library. ------------------------------------------------------------------------- -r1139 | zarq | 2003-03-14 10:43:10 +0100 (vr, 14 mrt 2003) | 4 lines +commit f238c209f4a0ced889b8fb443753ed2cdb3548b3 +Author: Guus Sliepen +Date: Sat May 17 22:12:52 2003 +0000 -Call RSA_blinding_on(), as advised in the paper on -http://crypto.stanford.edu/~dabo/abstracts/ssl-timing.html -to offer some resistance against timing attacks. + Fix links. ------------------------------------------------------------------------- -r1138 | guus | 2003-01-17 01:43:58 +0100 (vr, 17 jan 2003) | 2 lines +commit 249933350bda2c3fa09c7ce8eb36bf84ee30a1cb +Author: Guus Sliepen +Date: Wed May 7 11:21:58 2003 +0000 -Various fixes for autoconf and OpenSSL 0.9.7 and a missing header. + Small fixes. ------------------------------------------------------------------------- -r1137 | guus | 2003-01-17 01:37:20 +0100 (vr, 17 jan 2003) | 5 lines +commit 6ba4e2da55001e17aec6a7ee71002130555ff439 +Author: Guus Sliepen +Date: Tue May 6 23:14:45 2003 +0000 -- Fix indentation in some places. -- Optimise select loop. -- Remove unused function setup_outgoing_socket(). -- Clear EVP_CIPHER_CTX structures before using them. + Small fixes to make LZO compression work. ------------------------------------------------------------------------- -r1136 | guus | 2003-01-14 13:53:59 +0100 (di, 14 jan 2003) | 2 lines +commit c70f52087bf6f7514684bbc859b83aec2ca17ae4 +Author: Guus Sliepen +Date: Tue May 6 21:13:18 2003 +0000 -Add $NAME for tinc-up/down scripts. + - Per-node EVP_CIPHER_CTX to avoid initialisation overhead. + - LZO compression, thanks to Teemu Kiviniemi. + - Updated dutch translation. ------------------------------------------------------------------------- -r1135 | guus | 2003-01-12 18:02:23 +0100 (zo, 12 jan 2003) | 3 lines +commit 1ad2394b8468593030653bbfd0dee879fb711432 +Author: Guus Sliepen +Date: Sat Apr 19 11:12:45 2003 +0000 -Run graph algorithm when replacing a second connection from the same host -replaces an older one. + Make sure outgoing_t is completely freed. ------------------------------------------------------------------------- -r1134 | guus | 2002-12-27 20:32:33 +0100 (vr, 27 dec 2002) | 2 lines +commit bc9e78250ef6fb5169d03565b7d8d9caf309eb98 +Author: Guus Sliepen +Date: Fri Apr 18 21:18:36 2003 +0000 -PrivateKeyFile instead of PrivateKey. + Better handling of late packets. ------------------------------------------------------------------------- -r1133 | guus | 2002-11-14 23:09:03 +0100 (do, 14 nov 2002) | 2 lines +commit 51a1bcf00143319c74ffb58a66a19c41be422c21 +Author: Guus Sliepen +Date: Thu Apr 3 11:43:17 2003 +0000 -Fix PriorityInheritance. + HUP signal now closes connections to hosts if their host config file is + gone or changed. The tinc.conf file is reread for changes in the ConnectTo + lines. ------------------------------------------------------------------------- -r1132 | guus | 2002-10-07 09:32:31 +0200 (ma, 07 okt 2002) | 2 lines +commit 8285827da127e38728b60b5c5484e5cdabff2f21 +Author: Guus Sliepen +Date: Sat Mar 29 22:11:22 2003 +0000 -Add documentation for BindToAddress. + Checksums must also work for uneven number of bytes. ------------------------------------------------------------------------- -r1131 | zarq | 2002-09-30 21:04:37 +0200 (ma, 30 sep 2002) | 2 lines +commit c3ad3731a8dfa34535a156a7cfdb4e18afaa8bce +Author: Guus Sliepen +Date: Sat Mar 29 21:58:35 2003 +0000 -Fix saving of debug level for startup level 0 + Don't copy more than necessary. ------------------------------------------------------------------------- -r1130 | guus | 2002-09-24 13:43:34 +0200 (di, 24 sep 2002) | 2 lines +commit 7d21a8d1c7fd8909fe02385dbb4717c074db4648 +Author: Guus Sliepen +Date: Sat Mar 29 21:51:21 2003 +0000 -Run graph() after edge_del() when updating an edge. + - Speed up checksumming + - If a destination is not found in the subnet list or the destination node + is unreachable, respond with an appropiate ICMP message. ------------------------------------------------------------------------- -r1129 | wsl | 2002-09-16 16:08:04 +0200 (ma, 16 sep 2002) | 3 lines +commit 9792ba2cac35cb50cc99b72dd4cb9d3ef350dbd4 +Author: Guus Sliepen +Date: Fri Mar 28 13:41:49 2003 +0000 -its: Engels voor "van het" - 3e persoon enkelvoud, genitief, onzijdig -it's: Engels voor "het is". Dus niet "van het". + - Avoid memory leak caused by OpenSSL 0.9.7a. + - Disable RSA_blinding_on() because it segfaults. ------------------------------------------------------------------------- -r1127 | guus | 2002-09-16 00:37:59 +0200 (ma, 16 sep 2002) | 2 lines +commit 69158563e9f790777eb27aeb8484a86d12385af4 +Author: Guus Sliepen +Date: Wed Mar 19 11:45:05 2003 +0000 -Thank some more people. + Typo. ------------------------------------------------------------------------- -r1126 | guus | 2002-09-16 00:34:25 +0200 (ma, 16 sep 2002) | 2 lines +commit 88ae2e9e0c1eb62d9b74c4b38d9c0e93557fed9f +Author: Guus Sliepen +Date: Wed Mar 19 11:43:42 2003 +0000 -Remarks about 1.0pre8 release. + Make sure send_meta() writes everything. ------------------------------------------------------------------------- -r1125 | guus | 2002-09-16 00:19:38 +0200 (ma, 16 sep 2002) | 2 lines +commit 2fff0a91a7e3e5f44e97255b6dd5807656b255a8 +Author: Ivo Timmermans +Date: Fri Mar 14 09:43:10 2003 +0000 -Update documentation. + Call RSA_blinding_on(), as advised in the paper on + http://crypto.stanford.edu/~dabo/abstracts/ssl-timing.html + to offer some resistance against timing attacks. ------------------------------------------------------------------------- -r1124 | guus | 2002-09-16 00:19:19 +0200 (ma, 16 sep 2002) | 2 lines +commit 1783a3aaa9b692ab64260a9c2adf588ed6083a1c +Author: Guus Sliepen +Date: Fri Jan 17 00:43:58 2003 +0000 -Use /dev/net/tun as default for tun/tap device under Linux. + Various fixes for autoconf and OpenSSL 0.9.7 and a missing header. ------------------------------------------------------------------------- -r1123 | guus | 2002-09-15 19:40:00 +0200 (zo, 15 sep 2002) | 2 lines +commit c08858baa91a00e38c0f5482dbb0817dbd0361f1 +Author: Guus Sliepen +Date: Fri Jan 17 00:37:20 2003 +0000 -Updated dutch translation. + - Fix indentation in some places. + - Optimise select loop. + - Remove unused function setup_outgoing_socket(). + - Clear EVP_CIPHER_CTX structures before using them. ------------------------------------------------------------------------- -r1122 | guus | 2002-09-15 16:55:54 +0200 (zo, 15 sep 2002) | 2 lines +commit 38f562fdfcacb50d34b9a48bfaea7faa132f493a +Author: Guus Sliepen +Date: Tue Jan 14 12:53:59 2003 +0000 -Small fixes so tinc compiles out of the box on SunOS 5.8 + Add $NAME for tinc-up/down scripts. ------------------------------------------------------------------------- -r1121 | guus | 2002-09-15 14:26:24 +0200 (zo, 15 sep 2002) | 2 lines +commit 44b87ddb7ac90be13ef3e3d5118acaa158184853 +Author: Guus Sliepen +Date: Sun Jan 12 17:02:23 2003 +0000 -port_t isn't used anymore and conflicts with MacOS/X headers. + Run graph algorithm when replacing a second connection from the same host + replaces an older one. ------------------------------------------------------------------------- -r1120 | guus | 2002-09-15 14:26:04 +0200 (zo, 15 sep 2002) | 2 lines +commit 4c88ff86bcd32735d4768ef3464812cd77c500be +Author: Guus Sliepen +Date: Fri Dec 27 19:32:33 2002 +0000 -MacOS/X needs #define _P1003_1B_VISIBLE in order to use mlockall(). + PrivateKeyFile instead of PrivateKey. ------------------------------------------------------------------------- -r1119 | guus | 2002-09-12 00:25:58 +0200 (do, 12 sep 2002) | 2 lines +commit 5b2a62ebb6317cd88e491ee958c54670f381aee8 +Author: Guus Sliepen +Date: Thu Nov 14 22:09:03 2002 +0000 -What was I thinking? + Fix PriorityInheritance. ------------------------------------------------------------------------- -r1118 | guus | 2002-09-11 00:13:22 +0200 (wo, 11 sep 2002) | 2 lines +commit 07db46a44feb283c1c17bcce918ab49274a3b11f +Author: Guus Sliepen +Date: Mon Oct 7 07:32:31 2002 +0000 -Make sure malloc() is declared. + Add documentation for BindToAddress. ------------------------------------------------------------------------- -r1117 | guus | 2002-09-11 00:13:01 +0200 (wo, 11 sep 2002) | 2 lines +commit e310cc82d3f9c9bdb3b827daa149861a41e2e00a +Author: Ivo Timmermans +Date: Mon Sep 30 19:04:37 2002 +0000 -Fix placement of #include "config.h" + Fix saving of debug level for startup level 0 ------------------------------------------------------------------------- -r1116 | guus | 2002-09-10 23:46:05 +0200 (di, 10 sep 2002) | 2 lines +commit 006591efe5b3e6c64040d267f8c0477468abf2bf +Author: Guus Sliepen +Date: Tue Sep 24 11:43:34 2002 +0000 -Link with libintl if necessary. + Run graph() after edge_del() when updating an edge. ------------------------------------------------------------------------- -r1115 | guus | 2002-09-10 23:29:42 +0200 (di, 10 sep 2002) | 2 lines +commit 6904e0469ef52aa6100f0185d579bc205bd07be8 +Author: Wessel Dankers +Date: Mon Sep 16 14:08:04 2002 +0000 -Clean up after indent. + its: Engels voor "van het" - 3e persoon enkelvoud, genitief, onzijdig + it's: Engels voor "het is". Dus niet "van het". ------------------------------------------------------------------------- -r1114 | guus | 2002-09-10 11:40:25 +0200 (di, 10 sep 2002) | 2 lines +commit 4f3395ee4dad3cdd23706af180ebddfa5e576012 +Author: Guus Sliepen +Date: Sun Sep 15 22:37:59 2002 +0000 -Fix compiler warnings. + Thank some more people. ------------------------------------------------------------------------- -r1113 | guus | 2002-09-10 00:41:56 +0200 (di, 10 sep 2002) | 2 lines +commit b216297a004f083336c633aaccecb4ab175360b3 +Author: Guus Sliepen +Date: Sun Sep 15 22:34:25 2002 +0000 -Let GCC check format string and arguments of send_request(). + Remarks about 1.0pre8 release. ------------------------------------------------------------------------- -r1112 | guus | 2002-09-10 00:33:31 +0200 (di, 10 sep 2002) | 2 lines +commit 1dcbdf48eb4a642e4d70a9e67aaca78deacf352d +Author: Guus Sliepen +Date: Sun Sep 15 22:19:38 2002 +0000 -Remove redundant spaces. + Update documentation. ------------------------------------------------------------------------- -r1111 | guus | 2002-09-09 23:49:16 +0200 (ma, 09 sep 2002) | 2 lines +commit bf3a11898898c0618cd1b2e7a792b7d7fe56aecb +Author: Guus Sliepen +Date: Sun Sep 15 22:19:19 2002 +0000 -Switch to K&R style indentation. + Use /dev/net/tun as default for tun/tap device under Linux. ------------------------------------------------------------------------- -r1110 | guus | 2002-09-09 23:25:28 +0200 (ma, 09 sep 2002) | 2 lines +commit 7d76ceaebd5180f4ef37086980c799199eb7de16 +Author: Guus Sliepen +Date: Sun Sep 15 17:40:00 2002 +0000 -Switch to K&R style indentation. + Updated dutch translation. ------------------------------------------------------------------------- -r1109 | guus | 2002-09-09 21:40:12 +0200 (ma, 09 sep 2002) | 5 lines +commit 5eca9520d93bced1275d45e5e2a933d69354cd6d +Author: Guus Sliepen +Date: Sun Sep 15 14:55:54 2002 +0000 -Cleanups: - - Convert cp to cp(); so that automatic indenters work. - - Convert constructions like if(x == NULL) to if(!x). - - Move all assignments out of conditions. + Small fixes so tinc compiles out of the box on SunOS 5.8 ------------------------------------------------------------------------- -r1108 | guus | 2002-09-06 23:22:35 +0200 (vr, 06 sep 2002) | 2 lines +commit 8d472a415e9c5fdb878386005d29cdfd97b8a404 +Author: Guus Sliepen +Date: Sun Sep 15 12:26:24 2002 +0000 -Why don't these connection_t's get cleaned up? + port_t isn't used anymore and conflicts with MacOS/X headers. ------------------------------------------------------------------------- -r1107 | guus | 2002-09-06 23:02:36 +0200 (vr, 06 sep 2002) | 2 lines +commit 38c80bdd46fab68c686a293e2820041291972f3a +Author: Guus Sliepen +Date: Sun Sep 15 12:26:04 2002 +0000 -Fix MST algorithm. + MacOS/X needs #define _P1003_1B_VISIBLE in order to use mlockall(). ------------------------------------------------------------------------- -r1106 | guus | 2002-09-06 16:31:12 +0200 (vr, 06 sep 2002) | 2 lines +commit 3e3b4a3190cf950c265a8c62d577812a22b11dcc +Author: Guus Sliepen +Date: Wed Sep 11 22:25:58 2002 +0000 -Reset the *correct* seqnos. + What was I thinking? ------------------------------------------------------------------------- -r1105 | guus | 2002-09-06 14:19:16 +0200 (vr, 06 sep 2002) | 2 lines +commit f6905582d0e70ac5b44369780aaa921d9c721197 +Author: Guus Sliepen +Date: Tue Sep 10 22:13:22 2002 +0000 -edge_weight_compare() shouldn't rely on edge_compare(). + Make sure malloc() is declared. ------------------------------------------------------------------------- -r1104 | zarq | 2002-09-06 13:08:21 +0200 (vr, 06 sep 2002) | 2 lines +commit eaf1208e9d5c5a15e4b23de936830520bf3b5685 +Author: Guus Sliepen +Date: Tue Sep 10 22:13:01 2002 +0000 -Added AM_MAINTAINER_MODE + Fix placement of #include "config.h" ------------------------------------------------------------------------- -r1103 | guus | 2002-09-06 12:23:52 +0200 (vr, 06 sep 2002) | 2 lines +commit dd888ca685176128bf41034208f3dbb220f9d832 +Author: Guus Sliepen +Date: Tue Sep 10 21:46:05 2002 +0000 -Remove global edge_tree. + Link with libintl if necessary. ------------------------------------------------------------------------- -r1102 | guus | 2002-09-06 11:48:39 +0200 (vr, 06 sep 2002) | 2 lines +commit c01f78ed3603eecaec8e3649a3bfb3de9742fd24 +Author: Guus Sliepen +Date: Tue Sep 10 21:29:42 2002 +0000 -Only reset seqno's when a key is sent or received. + Clean up after indent. ------------------------------------------------------------------------- -r1101 | guus | 2002-09-05 01:11:58 +0200 (do, 05 sep 2002) | 2 lines +commit 161f917dd03c174742fb8c6722f430a93b506cb1 +Author: Guus Sliepen +Date: Tue Sep 10 09:40:25 2002 +0000 -Typo. + Fix compiler warnings. ------------------------------------------------------------------------- -r1100 | guus | 2002-09-05 01:05:49 +0200 (do, 05 sep 2002) | 2 lines +commit 3bc554347560a9c24e68bb2c7c7749be07bbec3d +Author: Guus Sliepen +Date: Mon Sep 9 22:41:56 2002 +0000 -Add missing headers. + Let GCC check format string and arguments of send_request(). ------------------------------------------------------------------------- -r1099 | guus | 2002-09-05 01:04:52 +0200 (do, 05 sep 2002) | 2 lines +commit 6f9f6779e6bd1dd7bb795b42dad550863a386ca8 +Author: Guus Sliepen +Date: Mon Sep 9 22:33:31 2002 +0000 -Run autopoint and libtoolize before creating initial makefiles. + Remove redundant spaces. ------------------------------------------------------------------------- -r1098 | guus | 2002-09-04 21:57:53 +0200 (wo, 04 sep 2002) | 2 lines +commit 9f38e394636a177c00a4545de2a99c661de36386 +Author: Guus Sliepen +Date: Mon Sep 9 21:49:16 2002 +0000 -Small updates. + Switch to K&R style indentation. ------------------------------------------------------------------------- -r1097 | guus | 2002-09-04 18:36:03 +0200 (wo, 04 sep 2002) | 2 lines +commit f75dcef72a81a337e847adf0bae54198894f65b9 +Author: Guus Sliepen +Date: Mon Sep 9 21:25:28 2002 +0000 -Updated dutch translation. + Switch to K&R style indentation. ------------------------------------------------------------------------- -r1096 | guus | 2002-09-04 18:26:45 +0200 (wo, 04 sep 2002) | 2 lines +commit 5fc1ed17f41f0c535cf57a4b7e00cd6d45759503 +Author: Guus Sliepen +Date: Mon Sep 9 19:40:12 2002 +0000 -Generalized request broadcasting/forwarding. + Cleanups: + - Convert cp to cp(); so that automatic indenters work. + - Convert constructions like if(x == NULL) to if(!x). + - Move all assignments out of conditions. ------------------------------------------------------------------------- -r1095 | guus | 2002-09-04 16:17:28 +0200 (wo, 04 sep 2002) | 2 lines +commit 5638b9830f9cfe43f545c37cfd7ccf1d4b4bfcc6 +Author: Guus Sliepen +Date: Fri Sep 6 21:22:35 2002 +0000 -Small fixes. + Why don't these connection_t's get cleaned up? ------------------------------------------------------------------------- -r1094 | guus | 2002-09-04 15:48:52 +0200 (wo, 04 sep 2002) | 2 lines +commit a8ddba42b99d7694359f1387235596b84d297b9e +Author: Guus Sliepen +Date: Fri Sep 6 21:02:36 2002 +0000 -Revert to edge and graph stuff. This time, use a directed graph. + Fix MST algorithm. ------------------------------------------------------------------------- -r1093 | guus | 2002-09-04 10:48:03 +0200 (wo, 04 sep 2002) | 3 lines +commit 66741978e16cc407e5c760621c34d1aabb753cd2 +Author: Guus Sliepen +Date: Fri Sep 6 14:31:12 2002 +0000 -Just ignore wrong ADD_NODEs instead of replying with a DEL_NODE, in the -hope other DEL_NODEs will catch up eventually. + Reset the *correct* seqnos. ------------------------------------------------------------------------- -r1092 | guus | 2002-09-04 10:36:34 +0200 (wo, 04 sep 2002) | 2 lines +commit d5b61fc0cd249fd2b2751a1ff77b321323a17beb +Author: Guus Sliepen +Date: Fri Sep 6 12:19:16 2002 +0000 -Don't forget to set prevhop to myself for new connections. + edge_weight_compare() shouldn't rely on edge_compare(). ------------------------------------------------------------------------- -r1091 | guus | 2002-09-04 10:33:08 +0200 (wo, 04 sep 2002) | 2 lines +commit fc7116a32b798589e7731db9f9db66345c8c3e01 +Author: Ivo Timmermans +Date: Fri Sep 6 11:08:21 2002 +0000 -Prevent looping DEL_NODE/ADD_NODE messages after a node disconnects. + Added AM_MAINTAINER_MODE ------------------------------------------------------------------------- -r1090 | guus | 2002-09-04 10:02:33 +0200 (wo, 04 sep 2002) | 2 lines +commit fbf8a47879671541939cfdc6beb93b02b9eee303 +Author: Guus Sliepen +Date: Fri Sep 6 10:23:52 2002 +0000 -Reduce KEY_CHANGED traffic. + Remove global edge_tree. ------------------------------------------------------------------------- -r1089 | guus | 2002-09-04 00:49:55 +0200 (wo, 04 sep 2002) | 2 lines +commit 641705df90b4c41e7f5083f6cd601cbbfb1c2c85 +Author: Guus Sliepen +Date: Fri Sep 6 09:48:39 2002 +0000 -Woops. + Only reset seqno's when a key is sent or received. ------------------------------------------------------------------------- -r1088 | guus | 2002-09-04 00:37:49 +0200 (wo, 04 sep 2002) | 2 lines +commit e4d85a6557ee45870bee0c5a16807e48b7a3c243 +Author: Guus Sliepen +Date: Wed Sep 4 23:11:58 2002 +0000 -A reachable node is always more preferable to an unreachable one... + Typo. ------------------------------------------------------------------------- -r1087 | guus | 2002-09-03 22:43:26 +0200 (di, 03 sep 2002) | 2 lines +commit b4f87952bf2d37524c705b32864f802144f94d68 +Author: Guus Sliepen +Date: Wed Sep 4 23:05:49 2002 +0000 -Drop graph and edge stuff. Use new node stuff instead. + Add missing headers. ------------------------------------------------------------------------- -r1086 | guus | 2002-09-03 22:42:05 +0200 (di, 03 sep 2002) | 2 lines +commit b18bd211bec84a804f58da5f2d2908e54de3fe40 +Author: Guus Sliepen +Date: Wed Sep 4 23:04:52 2002 +0000 -Make sure setlocale() is available. + Run autopoint and libtoolize before creating initial makefiles. ------------------------------------------------------------------------- -r1085 | guus | 2002-09-03 00:40:42 +0200 (di, 03 sep 2002) | 2 lines +commit 6fdaa8e1caff4edb44a105b03c79403b743e9bd2 +Author: Guus Sliepen +Date: Wed Sep 4 19:57:53 2002 +0000 -Replacement for the current routing algorithm. + Small updates. ------------------------------------------------------------------------- -r1084 | guus | 2002-08-24 14:54:55 +0200 (za, 24 aug 2002) | 2 lines +commit d4277e9ee8affa59ac9b3475245360bd14af1fa8 +Author: Guus Sliepen +Date: Wed Sep 4 16:36:03 2002 +0000 -Check for ranlib. + Updated dutch translation. ------------------------------------------------------------------------- -r1083 | guus | 2002-08-24 14:11:40 +0200 (za, 24 aug 2002) | 2 lines +commit 8b2b67e26c5b971761f5015764d5e188f6343bc4 +Author: Guus Sliepen +Date: Wed Sep 4 16:26:45 2002 +0000 -Gettext 1.11.5 compatibility. + Generalized request broadcasting/forwarding. ------------------------------------------------------------------------- -r1080 | guus | 2002-07-18 16:30:45 +0200 (do, 18 jul 2002) | 2 lines +commit 431fa10b37e78172a03c952e28a0364cc0e438f0 +Author: Guus Sliepen +Date: Wed Sep 4 14:17:28 2002 +0000 -Added support for raw sockets. This can be used instead of tun/tap devices. + Small fixes. ------------------------------------------------------------------------- -r1078 | guus | 2002-07-16 15:18:27 +0200 (di, 16 jul 2002) | 2 lines +commit 82ebfc923ddb050c88bdf5d65ac943a15ca8748a +Author: Guus Sliepen +Date: Wed Sep 4 13:48:52 2002 +0000 -Don't bother to chown, and correctly document ConnectTo. + Revert to edge and graph stuff. This time, use a directed graph. ------------------------------------------------------------------------- -r1077 | guus | 2002-07-16 15:12:49 +0200 (di, 16 jul 2002) | 2 lines +commit 973530db628fb91106d6fb7a17151e1d036e40a2 +Author: Guus Sliepen +Date: Wed Sep 4 08:48:03 2002 +0000 -Allow tincd to be locked into main memory. + Just ignore wrong ADD_NODEs instead of replying with a DEL_NODE, in the + hope other DEL_NODEs will catch up eventually. ------------------------------------------------------------------------- -r1076 | guus | 2002-07-12 13:45:21 +0200 (vr, 12 jul 2002) | 2 lines +commit 2af0bcc8fd39ca34a7ff856d539cdf38728a8c25 +Author: Guus Sliepen +Date: Wed Sep 4 08:36:34 2002 +0000 -Include complete fake-getname/addrinfo from OpenSSH. + Don't forget to set prevhop to myself for new connections. ------------------------------------------------------------------------- -r1071 | guus | 2002-07-11 14:57:06 +0200 (do, 11 jul 2002) | 2 lines +commit 698d6ddac6ab32d5a4b802941b02232793442684 +Author: Guus Sliepen +Date: Wed Sep 4 08:33:08 2002 +0000 -Added stub device.c for Cygwin. + Prevent looping DEL_NODE/ADD_NODE messages after a node disconnects. ------------------------------------------------------------------------- -r1070 | guus | 2002-07-11 14:55:58 +0200 (do, 11 jul 2002) | 2 lines +commit 4a7c2026aec6966f934b60d75bc472d28f8587d8 +Author: Guus Sliepen +Date: Wed Sep 4 08:02:33 2002 +0000 -Started port to Cygwin. + Reduce KEY_CHANGED traffic. ------------------------------------------------------------------------- -r1068 | guus | 2002-07-11 14:42:43 +0200 (do, 11 jul 2002) | 2 lines +commit ddb96301a39dd3dac8d3df4e2e189b13b75e0b6e +Author: Guus Sliepen +Date: Tue Sep 3 22:49:55 2002 +0000 -Clear subnets before using them. + Woops. ------------------------------------------------------------------------- -r1067 | guus | 2002-07-10 13:32:33 +0200 (wo, 10 jul 2002) | 2 lines +commit b5bb06200eda170c9836e1b4474d6f5b920c2151 +Author: Guus Sliepen +Date: Tue Sep 3 22:37:49 2002 +0000 -Allow identical subnets from different owners. + A reachable node is always more preferable to an unreachable one... ------------------------------------------------------------------------- -r1066 | guus | 2002-07-10 13:27:06 +0200 (wo, 10 jul 2002) | 4 lines +commit d134c4542d4e890e1c1007f32b866742319853c5 +Author: Guus Sliepen +Date: Tue Sep 3 20:43:26 2002 +0000 -Allow list of environment variables to be passed to execute_script(). -When executing host-up/down scripts, include the address and port of the -remote host. + Drop graph and edge stuff. Use new node stuff instead. ------------------------------------------------------------------------- -r1065 | guus | 2002-06-21 19:49:48 +0200 (vr, 21 jun 2002) | 2 lines +commit 856de4c5fe8acd779aa9277d4554e34ff3625e97 +Author: Guus Sliepen +Date: Tue Sep 3 20:42:05 2002 +0000 -Fix for prefixlengths of 32 (IPv4) and 128 (IPv6) bits. + Make sure setlocale() is available. ------------------------------------------------------------------------- -r1064 | guus | 2002-06-21 12:11:37 +0200 (vr, 21 jun 2002) | 3 lines +commit 2cb21f8810a6e0241a80623e991c8308b603ae95 +Author: Guus Sliepen +Date: Mon Sep 2 22:40:42 2002 +0000 -s/sliepen.warande.net/sliepen.eu.org/g -s/itimmermans@bigfoot.com/ivo@o2w.nl/g + Replacement for the current routing algorithm. ------------------------------------------------------------------------- -r1063 | guus | 2002-06-14 13:51:29 +0200 (vr, 14 jun 2002) | 2 lines +commit f2c2443bbcfd5e09518bd87f3fd8d4a727d73ae2 +Author: Guus Sliepen +Date: Sat Aug 24 12:54:55 2002 +0000 -Update comments about IPv6 autoconfiguration. + Check for ranlib. ------------------------------------------------------------------------- -r1062 | guus | 2002-06-13 18:12:40 +0200 (do, 13 jun 2002) | 2 lines +commit 912e7e968f4888d62b3c620893a70e825599973b +Author: Guus Sliepen +Date: Sat Aug 24 12:11:40 2002 +0000 -Reset listen_sockets after SIGHUP. + Gettext 1.11.5 compatibility. ------------------------------------------------------------------------- -r1061 | guus | 2002-06-12 15:45:23 +0200 (wo, 12 jun 2002) | 2 lines +commit 18948c5784bfedf0dd5a371e41bc2cceee76d92e +Author: Guus Sliepen +Date: Thu Jul 18 14:30:45 2002 +0000 -Add configuration details for NetBSD and Darwin (MacOS/X). + Added support for raw sockets. This can be used instead of tun/tap devices. ------------------------------------------------------------------------- -r1060 | guus | 2002-06-11 13:03:17 +0200 (di, 11 jun 2002) | 3 lines +commit 9f370893fafaeacdd78f5488cfa8b76fdee0d224 +Author: Guus Sliepen +Date: Tue Jul 16 13:18:27 2002 +0000 -Autoconf cleanup. Works for both 2.13 and 2.53, although running autoconf -2.53 still gives some errors. + Don't bother to chown, and correctly document ConnectTo. ------------------------------------------------------------------------- -r1059 | guus | 2002-06-10 17:08:23 +0200 (ma, 10 jun 2002) | 2 lines +commit 227ccd3a8a5602e4c31add8da1bfd8b35c6a801f +Author: Guus Sliepen +Date: Tue Jul 16 13:12:49 2002 +0000 -Include darwin/device.c in distribution. + Allow tincd to be locked into main memory. ------------------------------------------------------------------------- -r1058 | guus | 2002-06-10 16:35:18 +0200 (ma, 10 jun 2002) | 2 lines +commit c4cd19935763b379e730a6fdf53dc1ca98d0b938 +Author: Guus Sliepen +Date: Fri Jul 12 11:45:21 2002 +0000 -Use darwin/device.c when compiling on MacOS/X. + Include complete fake-getname/addrinfo from OpenSSH. ------------------------------------------------------------------------- -r1057 | guus | 2002-06-10 16:33:40 +0200 (ma, 10 jun 2002) | 2 lines +commit afabbd6b9020dd6555a7ecd320a7b3e96119d538 +Author: Guus Sliepen +Date: Thu Jul 11 12:57:06 2002 +0000 -Added Darwin (MacOS/X) tun device handling. + Added stub device.c for Cygwin. ------------------------------------------------------------------------- -r1055 | zarq | 2002-06-09 18:23:12 +0200 (zo, 09 jun 2002) | 2 lines +commit 8949404db08f4ab594e60778bb76a9061426d7cc +Author: Guus Sliepen +Date: Thu Jul 11 12:55:58 2002 +0000 -Added Alessandro Gatti + Started port to Cygwin. ------------------------------------------------------------------------- -r1054 | zarq | 2002-06-09 18:19:20 +0200 (zo, 09 jun 2002) | 2 lines +commit c98db1b861d62430e23f26b0da18e7b3ec875767 +Author: Guus Sliepen +Date: Thu Jul 11 12:42:43 2002 +0000 -Include netbsd's device.c in make dist + Clear subnets before using them. ------------------------------------------------------------------------- -r1053 | zarq | 2002-06-09 18:12:04 +0200 (zo, 09 jun 2002) | 2 lines +commit 8dd09568f1604f1ac8cc0d8d5120d986f5654900 +Author: Guus Sliepen +Date: Wed Jul 10 11:32:33 2002 +0000 -Include a few more header files + Allow identical subnets from different owners. ------------------------------------------------------------------------- -r1052 | zarq | 2002-06-09 17:58:05 +0200 (zo, 09 jun 2002) | 2 lines +commit 36cbaa32f480b481bf2ee99fd4835586a02ebc60 +Author: Guus Sliepen +Date: Wed Jul 10 11:27:06 2002 +0000 -Add /sw/{include,lib} to search paths if they exist + Allow list of environment variables to be passed to execute_script(). + When executing host-up/down scripts, include the address and port of the + remote host. ------------------------------------------------------------------------- -r1051 | zarq | 2002-06-09 17:50:12 +0200 (zo, 09 jun 2002) | 2 lines +commit a1bd878e11ae7e66e7e9a4040c3b19f9b7bc50f4 +Author: Guus Sliepen +Date: Fri Jun 21 17:49:48 2002 +0000 -getnameinfo fixes + Fix for prefixlengths of 32 (IPv4) and 128 (IPv6) bits. ------------------------------------------------------------------------- -r1050 | zarq | 2002-06-09 17:26:10 +0200 (zo, 09 jun 2002) | 2 lines +commit 627f7c22b447bd464b536cd016278545674df93d +Author: Guus Sliepen +Date: Fri Jun 21 10:11:37 2002 +0000 -OSX support + s/sliepen.warande.net/sliepen.eu.org/g + s/itimmermans@bigfoot.com/ivo@o2w.nl/g ------------------------------------------------------------------------- -r1048 | guus | 2002-06-08 16:08:57 +0200 (za, 08 jun 2002) | 3 lines +commit faabd163adf89bd0580cd40b8735ef8d9028a942 +Author: Guus Sliepen +Date: Fri Jun 14 11:51:29 2002 +0000 -- netinet/* include files depend on netinet/in_systm.h. -- Squash bashism in configure.in. + Update comments about IPv6 autoconfiguration. ------------------------------------------------------------------------- -r1047 | guus | 2002-06-08 15:46:43 +0200 (za, 08 jun 2002) | 2 lines +commit 940fcb6701d055f49530f12c93371f0280efce80 +Author: Guus Sliepen +Date: Thu Jun 13 16:12:40 2002 +0000 -Use inttypes.h instead of stdint.h. + Reset listen_sockets after SIGHUP. ------------------------------------------------------------------------- -r1046 | guus | 2002-06-08 14:57:10 +0200 (za, 08 jun 2002) | 5 lines +commit 3a3adf5b690e9be1390a5df3caee6af64b25838f +Author: Guus Sliepen +Date: Wed Jun 12 13:45:23 2002 +0000 -Cleanup: - - Remove checks for specific OS's, instead check for #defines/#includes. - - Use uint??_t where appropriate. - - Mask handling functions use void pointers to get rid of silly casts. + Add configuration details for NetBSD and Darwin (MacOS/X). ------------------------------------------------------------------------- -r1045 | wsl | 2002-06-07 13:14:05 +0200 (vr, 07 jun 2002) | 2 lines +commit 8988b127e18435054e48cbcca8ac712ddda3d6d2 +Author: Guus Sliepen +Date: Tue Jun 11 11:03:17 2002 +0000 -This should work much better. + Autoconf cleanup. Works for both 2.13 and 2.53, although running autoconf + 2.53 still gives some errors. ------------------------------------------------------------------------- -r1044 | guus | 2002-06-05 02:25:55 +0200 (wo, 05 jun 2002) | 2 lines +commit de6835a9dd1891b6435c128cc6c2293950a4d7a7 +Author: Guus Sliepen +Date: Mon Jun 10 15:08:23 2002 +0000 -Use correct includes on NetBSD. + Include darwin/device.c in distribution. ------------------------------------------------------------------------- -r1043 | guus | 2002-06-05 02:20:40 +0200 (wo, 05 jun 2002) | 2 lines +commit 40ac473cb10f9c6a59739ce70032b746d8e0bf68 +Author: Guus Sliepen +Date: Mon Jun 10 14:35:18 2002 +0000 -Make it work correctly with NetBSD tun device. + Use darwin/device.c when compiling on MacOS/X. ------------------------------------------------------------------------- -r1042 | guus | 2002-06-02 18:06:33 +0200 (zo, 02 jun 2002) | 3 lines +commit 69b758879ee6d322e89143141b98d52167845c26 +Author: Guus Sliepen +Date: Mon Jun 10 14:33:40 2002 +0000 -Support RSA_PUBKEYs (as opposed to RSAPublicKeys) so tinc accepts -public keys generated by the OpenSSL command line tools. + Added Darwin (MacOS/X) tun device handling. ------------------------------------------------------------------------- -r1035 | guus | 2002-05-01 11:15:58 +0200 (wo, 01 mei 2002) | 2 lines +commit bd72e14138185f342885c0ed1c0f2c5dbf571132 +Author: Ivo Timmermans +Date: Sun Jun 9 16:23:12 2002 +0000 -Only purge once when there are no more connections. + Added Alessandro Gatti ------------------------------------------------------------------------- -r1033 | guus | 2002-04-29 22:05:07 +0200 (ma, 29 apr 2002) | 3 lines +commit 944df3eeee50972fcac84cfc8eefb36033bf04ad +Author: Ivo Timmermans +Date: Sun Jun 9 16:19:20 2002 +0000 -Fix very stupid bug in node_del(), which might have caused corruption of -subnets. + Include netbsd's device.c in make dist ------------------------------------------------------------------------- -r1030 | guus | 2002-04-27 13:40:45 +0200 (za, 27 apr 2002) | 2 lines +commit 7608136a8dae24f2df30eac8644efd0d7cd57dc9 +Author: Ivo Timmermans +Date: Sun Jun 9 16:12:04 2002 +0000 -Informative log message if execl() failed. + Include a few more header files ------------------------------------------------------------------------- -r1029 | zarq | 2002-04-26 20:13:00 +0200 (vr, 26 apr 2002) | 2 lines +commit cd3601c5df57c7544ece00bf79e82b36499a26ff +Author: Ivo Timmermans +Date: Sun Jun 9 15:58:05 2002 +0000 -Typo + Add /sw/{include,lib} to search paths if they exist ------------------------------------------------------------------------- -r1028 | guus | 2002-04-25 21:17:24 +0200 (do, 25 apr 2002) | 2 lines +commit 548551fd05f58863dfbbaaf147febfab0a22889b +Author: Ivo Timmermans +Date: Sun Jun 9 15:50:12 2002 +0000 -Added Nick Patavalis for his RedHat package. + getnameinfo fixes ------------------------------------------------------------------------- -r1027 | guus | 2002-04-23 09:49:38 +0200 (di, 23 apr 2002) | 2 lines +commit 9d769e0bf2ce266e8533e5e7c16bf07e44a9be34 +Author: Ivo Timmermans +Date: Sun Jun 9 15:26:10 2002 +0000 -Add BindToAddress variable, similar to the late BindToIP. + OSX support ------------------------------------------------------------------------- -r1026 | guus | 2002-04-19 16:06:40 +0200 (vr, 19 apr 2002) | 2 lines +commit 78e88521845ae3bdd963ae5a414cb9c251963fa2 +Author: Guus Sliepen +Date: Sat Jun 8 14:08:57 2002 +0000 -Support for MaxOS/X. + - netinet/* include files depend on netinet/in_systm.h. + - Squash bashism in configure.in. ------------------------------------------------------------------------- -r1025 | zarq | 2002-04-18 22:09:05 +0200 (do, 18 apr 2002) | 2 lines +commit e47e51e9d17416e2b614287d14a5518881decd44 +Author: Guus Sliepen +Date: Sat Jun 8 13:46:43 2002 +0000 -Put #ifndef checks for HAVE_RAND_PSEUDO_BYTES in the correct places. + Use inttypes.h instead of stdint.h. ------------------------------------------------------------------------- -r981 | guus | 2002-04-09 13:44:47 +0200 (di, 09 apr 2002) | 2 lines +commit 116ba3b3da73fb857cf75b5c92c6aacd70d94dd9 +Author: Guus Sliepen +Date: Sat Jun 8 12:57:10 2002 +0000 -Remarks about 1.0pre7 release. + Cleanup: + - Remove checks for specific OS's, instead check for #defines/#includes. + - Use uint??_t where appropriate. + - Mask handling functions use void pointers to get rid of silly casts. ------------------------------------------------------------------------- -r980 | guus | 2002-04-09 13:43:45 +0200 (di, 09 apr 2002) | 2 lines +commit d333fca4d611b85dd922ddf35bd9eddcb8095c85 +Author: Wessel Dankers +Date: Fri Jun 7 11:14:05 2002 +0000 -Updated dutch translation. + This should work much better. ------------------------------------------------------------------------- -r979 | guus | 2002-04-09 13:43:29 +0200 (di, 09 apr 2002) | 2 lines +commit 14e570f5eeff631c1312b11fcc5d22230ec27aff +Author: Guus Sliepen +Date: Wed Jun 5 00:25:55 2002 +0000 -masklength is better known as prefixlength + Use correct includes on NetBSD. ------------------------------------------------------------------------- -r978 | guus | 2002-04-09 13:42:48 +0200 (di, 09 apr 2002) | 2 lines +commit 5886b6a10d0d2edf20ff53c4926ec4e41a36b8c0 +Author: Guus Sliepen +Date: Wed Jun 5 00:20:40 2002 +0000 -masklength is better known as prefixlength. + Make it work correctly with NetBSD tun device. ------------------------------------------------------------------------- -r977 | guus | 2002-04-08 15:27:09 +0200 (ma, 08 apr 2002) | 2 lines +commit 4856d8e1f8398780a49545f35ba9b5746c9fc060 +Author: Guus Sliepen +Date: Sun Jun 2 16:06:33 2002 +0000 -Automake forgets about depcomp, remind it. + Support RSA_PUBKEYs (as opposed to RSAPublicKeys) so tinc accepts + public keys generated by the OpenSSL command line tools. ------------------------------------------------------------------------- -r976 | guus | 2002-04-05 11:11:38 +0200 (vr, 05 apr 2002) | 2 lines +commit efa5148bc76effb440d807d653dda02de050fde0 +Author: Ivo Timmermans +Date: Tue May 7 14:48:41 2002 +0000 -Fix maskcheck() and maskcmp(). + Hm. ------------------------------------------------------------------------- -r975 | guus | 2002-04-01 23:28:39 +0200 (ma, 01 apr 2002) | 2 lines +commit 151ab8c9708534e012447688ed44d711d5b5fa2d +Author: Ivo Timmermans +Date: Thu May 2 13:23:58 2002 +0000 -check_rsa() is broken, I don't know why, just remove it for now. + test 2 ------------------------------------------------------------------------- -r974 | guus | 2002-04-01 23:28:05 +0200 (ma, 01 apr 2002) | 2 lines +commit be04387a0c868b22ee4427822573df8b3b479bbe +Author: Ivo Timmermans +Date: Thu May 2 13:22:44 2002 +0000 -Don't check_network_activity() if select() is interrupted by a signal. + test ------------------------------------------------------------------------- -r973 | guus | 2002-03-27 20:43:50 +0100 (wo, 27 mrt 2002) | 2 lines +commit a9bb66367df82d062175f2b9b4bf236d77ae3ff1 +Author: Ivo Timmermans +Date: Thu May 2 13:11:55 2002 +0000 -Make configure --help output look nicer. + Moved event.c/h ------------------------------------------------------------------------- -r972 | guus | 2002-03-27 17:26:26 +0100 (wo, 27 mrt 2002) | 2 lines +commit 474aab6325bf94724874cb74a9b56d9da739e1b8 +Author: Ivo Timmermans +Date: Thu May 2 11:52:28 2002 +0000 -Update with information about the pre6 release. + Callbacks ------------------------------------------------------------------------- -r971 | guus | 2002-03-27 17:00:49 +0100 (wo, 27 mrt 2002) | 2 lines +commit 4c1a4e8a790584e4c7d5c0f2485706f4c01e1911 +Author: Ivo Timmermans +Date: Thu May 2 11:50:07 2002 +0000 -Update dutch translation. + Another file moved; random interface stuff. ------------------------------------------------------------------------- -r970 | guus | 2002-03-27 17:00:38 +0100 (wo, 27 mrt 2002) | 2 lines +commit 2be8e69ca16e1558463c39c48af76d3d4a4674b7 +Author: Guus Sliepen +Date: Wed May 1 09:15:58 2002 +0000 -Fix format strings. + Only purge once when there are no more connections. ------------------------------------------------------------------------- -r969 | guus | 2002-03-27 16:47:06 +0100 (wo, 27 mrt 2002) | 2 lines +commit a77b35e748b7cf4cf7ac31750cefab7b2b0325f5 +Author: Ivo Timmermans +Date: Mon Apr 29 20:19:42 2002 +0000 -Remove symlink to device.c when doing a make dist. + Commit diff test ------------------------------------------------------------------------- -r968 | guus | 2002-03-27 16:35:07 +0100 (wo, 27 mrt 2002) | 2 lines +commit 7caa253df4a34e594438e3fbe80c2bddab9a2b4a +Author: Guus Sliepen +Date: Mon Apr 29 20:05:07 2002 +0000 -Recent automake uses $(AMTAR) instead of $(TAR) + Fix very stupid bug in node_del(), which might have caused corruption of + subnets. ------------------------------------------------------------------------- -r967 | guus | 2002-03-27 16:26:44 +0100 (wo, 27 mrt 2002) | 2 lines +commit 04d33be4bd102de67bb6dba5c449e12fea0db4d2 +Author: Ivo Timmermans +Date: Sun Apr 28 12:46:26 2002 +0000 -Remove cruft. + Moving files, first attempt at gcrypt compatibility, more interface + abstraction ------------------------------------------------------------------------- -r966 | guus | 2002-03-27 16:26:29 +0100 (wo, 27 mrt 2002) | 2 lines +commit b0a676988a8da3120e64ef0e1a4ea4c28b1511e1 +Author: Ivo Timmermans +Date: Sun Apr 28 12:43:40 2002 +0000 -Small updates. + *** empty log message *** ------------------------------------------------------------------------- -r965 | guus | 2002-03-27 16:01:37 +0100 (wo, 27 mrt 2002) | 2 lines +commit 67a6d7bcc4891c627663c639c0e02315bd4cf437 +Author: Guus Sliepen +Date: Sat Apr 27 11:40:45 2002 +0000 -Limit the amount of packets in a queue to 8. + Informative log message if execl() failed. ------------------------------------------------------------------------- -r964 | guus | 2002-03-27 16:01:16 +0100 (wo, 27 mrt 2002) | 2 lines +commit e6a67fc439fc3b46157647bed1af59b7519adb80 +Author: Ivo Timmermans +Date: Fri Apr 26 18:13:00 2002 +0000 -Extend list_t with the number of elements in the list. + Typo ------------------------------------------------------------------------- -r963 | guus | 2002-03-27 15:02:36 +0100 (wo, 27 mrt 2002) | 2 lines +commit 01747d73a217f7ddf2107b086476702a9d04d683 +Author: Guus Sliepen +Date: Thu Apr 25 19:17:24 2002 +0000 -Merge do_prune() with build_fdset(). Probably fixes the invalid filedescriptor error. + Added Nick Patavalis for his RedHat package. ------------------------------------------------------------------------- -r962 | guus | 2002-03-26 14:19:56 +0100 (di, 26 mrt 2002) | 2 lines +commit b6ad4ce35a4434c209ee26015f15a18180987bac +Author: Guus Sliepen +Date: Tue Apr 23 07:49:38 2002 +0000 -Small correction. + Add BindToAddress variable, similar to the late BindToIP. ------------------------------------------------------------------------- -r961 | guus | 2002-03-26 13:00:38 +0100 (di, 26 mrt 2002) | 2 lines +commit 40c2e36a96a3f5c34d4851b30f3561123f3906b5 +Author: Guus Sliepen +Date: Fri Apr 19 14:06:40 2002 +0000 -Fix execute_script(). + Support for MaxOS/X. ------------------------------------------------------------------------- -r960 | guus | 2002-03-25 16:51:58 +0100 (ma, 25 mrt 2002) | 2 lines +commit 97d492d9e23f43fe4c8a5ca8c95747088cf32f98 +Author: Ivo Timmermans +Date: Thu Apr 18 20:09:05 2002 +0000 -Send REQ_KEY only once until ANS_KEY has arrived. + Put #ifndef checks for HAVE_RAND_PSEUDO_BYTES in the correct places. ------------------------------------------------------------------------- -r959 | guus | 2002-03-25 16:12:09 +0100 (ma, 25 mrt 2002) | 2 lines +commit fa8faff84bbbeb818adaea80d7bf9e12e0074978 +Author: Ivo Timmermans +Date: Sat Apr 13 18:01:58 2002 +0000 -Tell a little bit more about security. + Print newline when writing to stderr ------------------------------------------------------------------------- -r958 | guus | 2002-03-25 16:01:32 +0100 (ma, 25 mrt 2002) | 2 lines +commit fbebc5b65606119c01e9e1e3fcc7b2cc4cfd1daf +Author: Ivo Timmermans +Date: Sat Apr 13 11:24:25 2002 +0000 -Updated documentation. + ... ------------------------------------------------------------------------- -r957 | guus | 2002-03-25 14:54:49 +0100 (ma, 25 mrt 2002) | 2 lines +commit 7c75090025a4b06290663e0033a62414f3368f7c +Author: Ivo Timmermans +Date: Sat Apr 13 11:23:46 2002 +0000 -Set myself->status.reachable. + Rename libvpn to libtinc ------------------------------------------------------------------------- -r956 | guus | 2002-03-24 18:14:01 +0100 (zo, 24 mrt 2002) | 2 lines +commit 55385cacbfb0c743fc518e54854e24b7b05a623c +Author: Ivo Timmermans +Date: Sat Apr 13 11:23:19 2002 +0000 -Configuration variables were still handled case sensitively. + Renamed libvpn to libtinc ------------------------------------------------------------------------- -r955 | guus | 2002-03-24 18:08:38 +0100 (zo, 24 mrt 2002) | 2 lines +commit 2389dcd573d909f21c8ec2d349b079075af6c7d3 +Author: Ivo Timmermans +Date: Sat Apr 13 11:21:58 2002 +0000 -OpenBSD tun device uses address family number instead of Ethernet type. + Include logging.h ------------------------------------------------------------------------- -r954 | guus | 2002-03-24 17:50:58 +0100 (zo, 24 mrt 2002) | 2 lines +commit 246ce12c92ccc7badbb8c8c9a88fa03a7de9811f +Author: Ivo Timmermans +Date: Sat Apr 13 11:21:01 2002 +0000 -Respect type field. + Use new logging system ------------------------------------------------------------------------- -r953 | guus | 2002-03-24 17:40:14 +0100 (zo, 24 mrt 2002) | 2 lines +commit a5b3ec41214ac8aea9b82734f92b5953e04a0c09 +Author: Ivo Timmermans +Date: Sat Apr 13 11:15:43 2002 +0000 -Updated dutch translation. + Things to ignore... ------------------------------------------------------------------------- -r952 | guus | 2002-03-24 17:36:56 +0100 (zo, 24 mrt 2002) | 2 lines +commit e239504524589a0f1549ca174f927afd07d563ba +Author: Ivo Timmermans +Date: Sat Apr 13 11:14:50 2002 +0000 -Set $INTERFACE correctly when using ethertap while compiled with tun/tap support. + Compile in logging.c ------------------------------------------------------------------------- -r951 | guus | 2002-03-24 17:28:27 +0100 (zo, 24 mrt 2002) | 3 lines +commit e26dd564163fca001ab1694a51e7412f9ac970de +Author: Ivo Timmermans +Date: Sat Apr 13 11:08:31 2002 +0000 -Execute hosts/name-up when a node becomes reachable, and hosts/name-down -when it becomes unreachable. + Use logging.h instead of syslog.h ------------------------------------------------------------------------- -r950 | guus | 2002-03-24 17:22:59 +0100 (zo, 24 mrt 2002) | 2 lines +commit 72cd8938e2c759905666ea7d2c90dc1f0b2e2cd5 +Author: Ivo Timmermans +Date: Sat Apr 13 11:00:41 2002 +0000 -Don't try to execute scripts unless they exist. + Added prototype for log_syslog ------------------------------------------------------------------------- -r949 | guus | 2002-03-23 21:21:10 +0100 (za, 23 mrt 2002) | 2 lines +commit 48b80c93d30d5fae4273b0b496252bbc884abe53 +Author: Ivo Timmermans +Date: Sat Apr 13 10:55:42 2002 +0000 -Reset retry timeout when receiving the first PONG, not right after receiving the ACK. + log_default_hook was renamed to log_default ------------------------------------------------------------------------- -r948 | guus | 2002-03-23 21:13:56 +0100 (za, 23 mrt 2002) | 2 lines +commit b63c3a1f0002675b6bedbd0b235e0ad0a708d4e3 +Author: Ivo Timmermans +Date: Sat Apr 13 10:50:48 2002 +0000 -Don't run graph algorithms if no edge is deleted in terminate_connection(). + Added priority definitions from syslog.h ------------------------------------------------------------------------- -r947 | guus | 2002-03-23 21:12:29 +0100 (za, 23 mrt 2002) | 2 lines +commit 490b13edcfcae0422b6bd77fdb2a7f0181b14307 +Author: Ivo Timmermans +Date: Sat Apr 13 10:45:56 2002 +0000 -free() request strings when deleting past requests from the tree. + Some magic ------------------------------------------------------------------------- -r946 | guus | 2002-03-23 21:01:05 +0100 (za, 23 mrt 2002) | 2 lines +commit 738389581b1ba29a181f639f3d20e3e24ff546f5 +Author: Ivo Timmermans +Date: Sat Apr 13 10:43:10 2002 +0000 -send_ack() was broken. + Add syslog wrapper ------------------------------------------------------------------------- -r945 | guus | 2002-03-22 14:31:18 +0100 (vr, 22 mrt 2002) | 2 lines +commit efa59f7cf4d416c8416866baeaa72cba7e936568 +Author: Ivo Timmermans +Date: Sat Apr 13 10:40:09 2002 +0000 -Fix compiler warnings, strictly use long int and %lx for options. + Add syslog() wrapper ------------------------------------------------------------------------- -r944 | guus | 2002-03-22 13:41:54 +0100 (vr, 22 mrt 2002) | 2 lines +commit 8822481d7b11db72d5400717d6b491b5f36bcb1f +Author: Ivo Timmermans +Date: Sat Apr 13 10:29:07 2002 +0000 -Fix add_edge_h(). + Rename log_message to log ------------------------------------------------------------------------- -r943 | guus | 2002-03-22 12:43:48 +0100 (vr, 22 mrt 2002) | 4 lines +commit cc603e2765f17555ecdc2b74c27ebf96e6691bf6 +Author: Ivo Timmermans +Date: Sat Apr 13 10:25:38 2002 +0000 -- Added support for jumbograms. -- Remove tcpaddress from edges, it is not used at all. -- Last bits of code to prevent looping requests. + New logging system to replace syslog() calls with a generic function. ------------------------------------------------------------------------- -r942 | guus | 2002-03-22 00:11:53 +0100 (vr, 22 mrt 2002) | 2 lines +commit 131327a729216de8ae86da0c3c4d65d409741b7b +Author: Ivo Timmermans +Date: Sat Apr 13 10:04:46 2002 +0000 -Put a break on requests that run around in circles. + Remove debug_lvl ------------------------------------------------------------------------- -r941 | guus | 2002-03-19 23:48:25 +0100 (di, 19 mrt 2002) | 3 lines +commit e3c51b61caabc1a55772f7a52e75aab642c200ed +Author: Ivo Timmermans +Date: Sat Apr 13 10:02:48 2002 +0000 -Updated SSSP algorithm to automatically detect indirect links (if a node uses -different addresses for connections to other nodes). + Update copyright info ------------------------------------------------------------------------- -r940 | guus | 2002-03-19 01:08:34 +0100 (di, 19 mrt 2002) | 2 lines +commit 9e8468f54aa5ecdb8b63c60449791427b59a474d +Author: Ivo Timmermans +Date: Sat Apr 13 10:02:16 2002 +0000 -Updated dutch translation. + Remove debug level declaration ------------------------------------------------------------------------- -r939 | guus | 2002-03-19 01:08:23 +0100 (di, 19 mrt 2002) | 2 lines +commit 9f2c50e159caea1884c6a7aaa33f8098539ae0f5 +Author: Guus Sliepen +Date: Fri Apr 12 08:25:01 2002 +0000 -Don't use s6_addr[16|32] anymore. + Adding even more stuff from the CABAL branch. ------------------------------------------------------------------------- -r938 | guus | 2002-03-19 01:07:09 +0100 (di, 19 mrt 2002) | 2 lines +commit 191dcd5add0afba8b5d3aaa1e188c562c621712e +Author: Ivo Timmermans +Date: Thu Apr 11 20:18:02 2002 +0000 -Cleanup. + Also compile in pokey/ ------------------------------------------------------------------------- -r937 | guus | 2002-03-18 23:47:20 +0100 (ma, 18 mrt 2002) | 3 lines +commit 39e93f473d34d6cdf6f4a7f0390a3b50cbd7b564 +Author: Ivo Timmermans +Date: Thu Apr 11 20:17:33 2002 +0000 -Remember sockaddrs of listening sockets, use appropriate one when sending -UDP packets. + Write src/pokey/Makefile ------------------------------------------------------------------------- -r936 | guus | 2002-03-18 15:39:37 +0100 (ma, 18 mrt 2002) | 2 lines +commit c351b9e25b9f7b168a47fd8e6b60c66377e1824c +Author: Ivo Timmermans +Date: Thu Apr 11 14:27:35 2002 +0000 -Fix #define s6_addr32. + Pokey interface definition ------------------------------------------------------------------------- -r935 | guus | 2002-03-18 15:19:02 +0100 (ma, 18 mrt 2002) | 2 lines +commit 17b308f0f0879c01f6864265af2e63595e965993 +Author: Ivo Timmermans +Date: Thu Apr 11 14:23:56 2002 +0000 -#define s6_addr32, needed for FreeBSD. + Main pokey interface files. ------------------------------------------------------------------------- -r934 | guus | 2002-03-17 17:08:39 +0100 (zo, 17 mrt 2002) | 2 lines +commit b5b38381c643632aa88c677236cace8c60e8344e +Author: Ivo Timmermans +Date: Tue Apr 9 16:11:48 2002 +0000 -Only unmap IPv6 addresses. + Last bits (hopefully) ------------------------------------------------------------------------- -r933 | guus | 2002-03-17 16:59:29 +0100 (zo, 17 mrt 2002) | 2 lines +commit 77dd7b55801a3c7c2c6221664204ffdd7b83836a +Author: Ivo Timmermans +Date: Tue Apr 9 15:51:26 2002 +0000 -Unmap v4mapped sockaddrs. + More... ------------------------------------------------------------------------- -r932 | guus | 2002-03-15 16:50:14 +0100 (vr, 15 mrt 2002) | 2 lines +commit 58c1df4028429ed6de4dad9455e3c92928450ffe +Author: Ivo Timmermans +Date: Tue Apr 9 15:48:54 2002 +0000 -Typo. + More updates ------------------------------------------------------------------------- -r931 | guus | 2002-03-15 16:40:40 +0100 (vr, 15 mrt 2002) | 2 lines +commit 86dc60b9808d3aac70eccda80607a91ffd2e5292 +Author: Ivo Timmermans +Date: Tue Apr 9 15:32:14 2002 +0000 -Different way of detecting neighbor solicitation requests. + Ok, I forgot these ;) ------------------------------------------------------------------------- -r930 | guus | 2002-03-15 16:08:21 +0100 (vr, 15 mrt 2002) | 2 lines +commit af23dfa5efb82b35eb00b94bda56390c9e2aac6f +Author: Ivo Timmermans +Date: Tue Apr 9 15:28:45 2002 +0000 -Oops, don't forget to actually put the checksum in the response packet. + Updating HEAD branch #5; Last files from CABAL. ------------------------------------------------------------------------- -r929 | guus | 2002-03-15 15:41:57 +0100 (vr, 15 mrt 2002) | 2 lines +commit 462ab530e546f5732dfd51134751da6f6910d679 +Author: Ivo Timmermans +Date: Tue Apr 9 15:26:01 2002 +0000 -Neighbor solicitation requests now work (I think). + Updating HEAD branch #4; Merging CABAL -> HEAD. ------------------------------------------------------------------------- -r928 | guus | 2002-03-12 17:30:15 +0100 (di, 12 mrt 2002) | 2 lines +commit e64ef59df44d39c76c00dee22841bbcce7c24e47 +Author: Ivo Timmermans +Date: Tue Apr 9 15:07:27 2002 +0000 -Revert changes to Kruskal's algo. + Updating HEAD branch #3; more obsolete files removed. ------------------------------------------------------------------------- -r927 | guus | 2002-03-12 15:25:04 +0100 (di, 12 mrt 2002) | 2 lines +commit db59cbfa47aa152bcfa807754189aa18f28cb569 +Author: Ivo Timmermans +Date: Tue Apr 9 14:58:14 2002 +0000 -Put #ifdef NEIGHBORSOL around corresponding code. + Updating HEAD branch #2; removing debian/ dir. ------------------------------------------------------------------------- -r926 | guus | 2002-03-12 15:20:44 +0100 (di, 12 mrt 2002) | 2 lines +commit 50f2afec7e6dab3d809fc1b82820d1069205b69b +Author: Ivo Timmermans +Date: Tue Apr 9 14:54:37 2002 +0000 -Remove silly cache thingy. + Updating HEAD branch #1; removing obsolete files. ------------------------------------------------------------------------- -r925 | guus | 2002-03-12 15:19:51 +0100 (di, 12 mrt 2002) | 2 lines +commit e69d2258032362c85c5936a5c137c70227e59332 +Author: Guus Sliepen +Date: Tue Apr 9 11:44:47 2002 +0000 -Packet sequence number/authentication warnings only if debug_lvl >= 5. + Remarks about 1.0pre7 release. ------------------------------------------------------------------------- -r924 | guus | 2002-03-12 14:42:23 +0100 (di, 12 mrt 2002) | 2 lines +commit f2a3fcbdda250e5982c3ef36808568f996f8fff1 +Author: Guus Sliepen +Date: Tue Apr 9 11:43:45 2002 +0000 -Simplified implementation of Kruskal's minimum spanning tree algorithm. + Updated dutch translation. ------------------------------------------------------------------------- -r923 | guus | 2002-03-11 14:56:00 +0100 (ma, 11 mrt 2002) | 2 lines +commit b1322d244ff24e900f2298b8aa775d825c8ab00b +Author: Guus Sliepen +Date: Tue Apr 9 11:43:29 2002 +0000 -New strategy: forward icmp6 neighbor solicitations to intended target. + masklength is better known as prefixlength ------------------------------------------------------------------------- -r922 | guus | 2002-03-11 14:14:53 +0100 (ma, 11 mrt 2002) | 2 lines +commit 5df8a8cb3f4a0d2290f6677b44bbcaaf27a60bbc +Author: Guus Sliepen +Date: Tue Apr 9 11:42:48 2002 +0000 -Try to reply to neighbor solicitation requests. + masklength is better known as prefixlength. ------------------------------------------------------------------------- -r921 | guus | 2002-03-11 12:45:12 +0100 (ma, 11 mrt 2002) | 2 lines +commit 630dd023b990e076fdab890ff90783dc1ac7c13f +Author: Guus Sliepen +Date: Mon Apr 8 13:27:09 2002 +0000 -prune_connections() before build_fdset(). + Automake forgets about depcomp, remind it. ------------------------------------------------------------------------- -r920 | guus | 2002-03-11 12:23:04 +0100 (ma, 11 mrt 2002) | 3 lines +commit ad6b1203490699ecc708290b2af1a45e134a5e20 +Author: Guus Sliepen +Date: Fri Apr 5 09:11:38 2002 +0000 -Cleanups, spelling fixes, allow symbol names for signals (-k option), -don't remove pidfile if other tincd is still running. + Fix maskcheck() and maskcmp(). ------------------------------------------------------------------------- -r919 | guus | 2002-03-10 17:09:15 +0100 (zo, 10 mrt 2002) | 2 lines +commit d8c249008a0b2abd44e652ed70e69b3dbc05b9d8 +Author: Guus Sliepen +Date: Mon Apr 1 21:28:39 2002 +0000 -Don't retry to make outgoing connections when exitting. + check_rsa() is broken, I don't know why, just remove it for now. ------------------------------------------------------------------------- -r918 | guus | 2002-03-10 16:40:27 +0100 (zo, 10 mrt 2002) | 2 lines +commit 438419734ebee38dc3f7390e5c8ae8e6ca2cb6cf +Author: Guus Sliepen +Date: Mon Apr 1 21:28:05 2002 +0000 -Small fixes to improve portability. + Don't check_network_activity() if select() is interrupted by a signal. ------------------------------------------------------------------------- -r917 | guus | 2002-03-10 15:07:08 +0100 (zo, 10 mrt 2002) | 2 lines +commit 3d8a373bb3a788efffc555122b9d0569b96c5944 +Author: Guus Sliepen +Date: Wed Mar 27 19:43:50 2002 +0000 -Autodetect $MAKE/gmake/make. + Make configure --help output look nicer. ------------------------------------------------------------------------- -r916 | guus | 2002-03-10 15:05:35 +0100 (zo, 10 mrt 2002) | 2 lines +commit 9a03e7fa3d52ea062b4a3ff88b5d87ee95d24772 +Author: Guus Sliepen +Date: Wed Mar 27 16:26:26 2002 +0000 -po/POTFILES and po/Makefile should not be generated by configure. + Update with information about the pre6 release. ------------------------------------------------------------------------- -r915 | guus | 2002-03-10 15:04:48 +0100 (zo, 10 mrt 2002) | 2 lines +commit 33d3bad87d5f3e00e3ed81b75bca2ef21fd6e983 +Author: Guus Sliepen +Date: Wed Mar 27 16:00:49 2002 +0000 -Fix forwarding of IPv6 packets. + Update dutch translation. ------------------------------------------------------------------------- -r914 | guus | 2002-03-01 16:14:29 +0100 (vr, 01 mrt 2002) | 2 lines +commit 0fe3dc38ed0527a5cfda9218114c8ee10422086b +Author: Guus Sliepen +Date: Wed Mar 27 16:00:38 2002 +0000 -Check if BindToDevice and PriorityInheritance are supported. + Fix format strings. ------------------------------------------------------------------------- -r913 | guus | 2002-03-01 15:33:48 +0100 (vr, 01 mrt 2002) | 2 lines +commit 420f46acb0551a290b3263e39347b694286b2fa4 +Author: Guus Sliepen +Date: Wed Mar 27 15:47:06 2002 +0000 -Woops. + Remove symlink to device.c when doing a make dist. ------------------------------------------------------------------------- -r912 | guus | 2002-03-01 15:25:10 +0100 (vr, 01 mrt 2002) | 2 lines +commit a5d8be8b1a9978d58c251d1020bb730bb1dc8ea1 +Author: Guus Sliepen +Date: Wed Mar 27 15:35:07 2002 +0000 -Document and clean up MAC address expiry. + Recent automake uses $(AMTAR) instead of $(TAR) ------------------------------------------------------------------------- -r911 | guus | 2002-03-01 15:09:31 +0100 (vr, 01 mrt 2002) | 4 lines +commit c6d2f6c620beae387e8f9fc995ed7c8e8a5bc3dc +Author: Guus Sliepen +Date: Wed Mar 27 15:26:44 2002 +0000 -- Global time_t now, so that we don't have to call time() too often. -- MAC addresses expire after a time configurable by MACExpire (default 600 - seconds) + Remove cruft. ------------------------------------------------------------------------- -r910 | guus | 2002-03-01 14:38:15 +0100 (vr, 01 mrt 2002) | 2 lines +commit efd29fde85481e080a676f2ba780a528a90a9925 +Author: Guus Sliepen +Date: Wed Mar 27 15:26:29 2002 +0000 -Updated dutch translation. + Small updates. ------------------------------------------------------------------------- -r909 | guus | 2002-03-01 14:38:02 +0100 (vr, 01 mrt 2002) | 2 lines +commit 5eba1e1f6feadb3f7efb1261bd65e1e9e40b7f2b +Author: Guus Sliepen +Date: Wed Mar 27 15:01:37 2002 +0000 -Updated documentation. + Limit the amount of packets in a queue to 8. ------------------------------------------------------------------------- -r908 | guus | 2002-03-01 14:18:54 +0100 (vr, 01 mrt 2002) | 2 lines +commit 61cb593e670107ca3041f582c5486c243d5eda9e +Author: Guus Sliepen +Date: Wed Mar 27 15:01:16 2002 +0000 -Create/bind TCP and UDP listening sockets in pairs. + Extend list_t with the number of elements in the list. ------------------------------------------------------------------------- -r907 | guus | 2002-03-01 13:26:56 +0100 (vr, 01 mrt 2002) | 4 lines +commit 0e7136027ce05bfeca977f2f64f3b228ea4fda87 +Author: Guus Sliepen +Date: Wed Mar 27 14:02:36 2002 +0000 -If "PriorityInheritance = yes" is specified in tinc.conf, the value of the -TOS field of the tunneled packets will be passed on to the UDP packets tinc -sends out. + Merge do_prune() with build_fdset(). Probably fixes the invalid filedescriptor error. ------------------------------------------------------------------------- -r906 | guus | 2002-03-01 13:25:58 +0100 (vr, 01 mrt 2002) | 2 lines +commit e2238047d39eacc69da5732937021c38171ec7b9 +Author: Guus Sliepen +Date: Tue Mar 26 13:19:56 2002 +0000 -Fix listening sockets. + Small correction. ------------------------------------------------------------------------- -r905 | guus | 2002-03-01 12:18:34 +0100 (vr, 01 mrt 2002) | 2 lines +commit 7d07df71f9b82afdcf23494867bb8899198a6223 +Author: Guus Sliepen +Date: Tue Mar 26 12:00:38 2002 +0000 -Make BindToInterface work. + Fix execute_script(). ------------------------------------------------------------------------- -r904 | guus | 2002-02-27 23:37:55 +0100 (wo, 27 feb 2002) | 2 lines +commit 2de5e0eef911b9ff723d562ef9c62d833f3cdc45 +Author: Guus Sliepen +Date: Mon Mar 25 15:51:58 2002 +0000 -Fix send_request() bug. + Send REQ_KEY only once until ANS_KEY has arrived. ------------------------------------------------------------------------- -r903 | guus | 2002-02-27 00:26:41 +0100 (wo, 27 feb 2002) | 2 lines +commit a0c1696515fabd2183da7d8d83fd68410d2ec834 +Author: Guus Sliepen +Date: Mon Mar 25 15:12:09 2002 +0000 -Allow multiple listening sockets. + Tell a little bit more about security. ------------------------------------------------------------------------- -r902 | guus | 2002-02-26 23:47:51 +0100 (di, 26 feb 2002) | 2 lines +commit 89a2f761a6d8ae4912c2dd2e9178589001487ef5 +Author: Guus Sliepen +Date: Mon Mar 25 15:01:32 2002 +0000 -Tweaking IPv6 support. + Updated documentation. ------------------------------------------------------------------------- -r901 | guus | 2002-02-20 23:37:38 +0100 (wo, 20 feb 2002) | 3 lines +commit 33d8747021d57c5827c6a755739756f95c7527c8 +Author: Guus Sliepen +Date: Mon Mar 25 13:54:49 2002 +0000 -- Change SA_LEN to SALEN, former one is already defined on some platforms. -- Use SALEN everywhere appropriate. + Set myself->status.reachable. ------------------------------------------------------------------------- -r900 | guus | 2002-02-20 23:15:32 +0100 (wo, 20 feb 2002) | 4 lines +commit 2749b997df33749f13d05e294db0e1e327e81d12 +Author: Guus Sliepen +Date: Sun Mar 24 17:14:01 2002 +0000 -- Use gai_strerror() where appropriate -- Clear hints before using them with getaddrinfo() -- Use sa_len on platforms that support them + Configuration variables were still handled case sensitively. ------------------------------------------------------------------------- -r899 | guus | 2002-02-20 20:31:15 +0100 (wo, 20 feb 2002) | 2 lines +commit c73bdd6bc8e213b7e27848b97307228c01570a1d +Author: Guus Sliepen +Date: Sun Mar 24 17:08:38 2002 +0000 -Preserve inpkt->len, needed for broadcasts. + OpenBSD tun device uses address family number instead of Ethernet type. ------------------------------------------------------------------------- -r898 | guus | 2002-02-20 20:25:09 +0100 (wo, 20 feb 2002) | 3 lines +commit 8379c14b7f7a9b1400dd3776fc21dc9ccddd991d +Author: Guus Sliepen +Date: Sun Mar 24 16:50:58 2002 +0000 -Protocol now also exchanges cipher/digest/maclength/compression for the -meta connection. + Respect type field. ------------------------------------------------------------------------- -r897 | guus | 2002-02-20 18:16:15 +0100 (wo, 20 feb 2002) | 2 lines +commit ad4f5cbc5fbce23893b7d42669ba907f18cc8ff4 +Author: Guus Sliepen +Date: Sun Mar 24 16:40:14 2002 +0000 -Cache results of lookup_subnet_...(). + Updated dutch translation. ------------------------------------------------------------------------- -r896 | guus | 2002-02-20 18:15:33 +0100 (wo, 20 feb 2002) | 2 lines +commit 4252ae83a43ea81382ce71ba614e2d1655f2e189 +Author: Guus Sliepen +Date: Sun Mar 24 16:36:56 2002 +0000 -Fix maskcmp() and maskcpy(). + Set $INTERFACE correctly when using ethertap while compiled with tun/tap support. ------------------------------------------------------------------------- -r895 | guus | 2002-02-20 17:04:59 +0100 (wo, 20 feb 2002) | 2 lines +commit d699f3079c658e05f928c358d110d1d27849ea71 +Author: Guus Sliepen +Date: Sun Mar 24 16:28:27 2002 +0000 -Forward packets in router mode. + Execute hosts/name-up when a node becomes reachable, and hosts/name-down + when it becomes unreachable. ------------------------------------------------------------------------- -r894 | guus | 2002-02-20 17:04:39 +0100 (wo, 20 feb 2002) | 2 lines +commit 6ad5dd1a9adb1c1322ceb44d6f0fd160229e72ff +Author: Guus Sliepen +Date: Sun Mar 24 16:22:59 2002 +0000 -Use AF_UNSPEC for listening sockets if AddressFamily = any. + Don't try to execute scripts unless they exist. ------------------------------------------------------------------------- -r893 | guus | 2002-02-20 17:04:07 +0100 (wo, 20 feb 2002) | 2 lines +commit 594d5b5d15551bd802c43926c7cb8863b7531654 +Author: Guus Sliepen +Date: Sat Mar 23 20:21:10 2002 +0000 -Fix segfault when receiving HUP signal. + Reset retry timeout when receiving the first PONG, not right after receiving the ACK. ------------------------------------------------------------------------- -r892 | guus | 2002-02-18 17:25:19 +0100 (ma, 18 feb 2002) | 8 lines +commit cbd8133ab4a2ea8a0c46224a5f1ae79e92819e5f +Author: Guus Sliepen +Date: Sat Mar 23 20:13:56 2002 +0000 -- Non-blocking connect()s. -- Socket handling revamped to use sockaddr_t. -- tinc can now tunnel over IPv6. -- Handle all addresses and subnets in network byte order. - Only convert them when they need to be printed. -- IPv6 subnets bigger than /128 now work. -- Use %s and strerror(errno) instead of %m. + Don't run graph algorithms if no edge is deleted in terminate_connection(). ------------------------------------------------------------------------- -r888 | guus | 2002-02-12 15:42:37 +0100 (di, 12 feb 2002) | 2 lines +commit 6aee1ad021092d37538e15da22367789a4d4a763 +Author: Guus Sliepen +Date: Sat Mar 23 20:12:29 2002 +0000 -Add check for NetBSD. + free() request strings when deleting past requests from the tree. ------------------------------------------------------------------------- -r887 | guus | 2002-02-12 15:40:12 +0100 (di, 12 feb 2002) | 2 lines +commit ccea26e0044ea59a9722385c9d69b1bc703e884f +Author: Guus Sliepen +Date: Sat Mar 23 20:01:05 2002 +0000 -Added device.c for NetBSD, actually a copy of the OpenBSD one. + send_ack() was broken. ------------------------------------------------------------------------- -r886 | guus | 2002-02-12 15:36:45 +0100 (di, 12 feb 2002) | 2 lines +commit 3c5655f59e85d312d11fa04489123e604920f95b +Author: Guus Sliepen +Date: Fri Mar 22 13:31:18 2002 +0000 -Get rid of sys/signal.h. + Fix compiler warnings, strictly use long int and %lx for options. ------------------------------------------------------------------------- -r884 | guus | 2002-02-12 15:29:00 +0100 (di, 12 feb 2002) | 2 lines +commit d6b70ed6f8b7ed65f64193fcfcdb6c8f4625e03c +Author: Guus Sliepen +Date: Fri Mar 22 12:41:54 2002 +0000 -Don't use sa_sigaction (which NetBSD doesn't like) at all if we don't use siginfo. + Fix add_edge_h(). ------------------------------------------------------------------------- -r883 | guus | 2002-02-11 16:59:18 +0100 (ma, 11 feb 2002) | 4 lines +commit 52e7699273a3009fe4d91e608522401076922785 +Author: Guus Sliepen +Date: Fri Mar 22 11:43:48 2002 +0000 -Added support for packet compression, thanks to Mark Glines. -Add "Compression = " to the host config files, where level can be -0 (off), or any integer between 1 (fast) and 9 (best). + - Added support for jumbograms. + - Remove tcpaddress from edges, it is not used at all. + - Last bits of code to prevent looping requests. ------------------------------------------------------------------------- -r881 | guus | 2002-02-11 15:20:46 +0100 (ma, 11 feb 2002) | 2 lines +commit 9da5390666ad532825d820b3554da3f39d3bc511 +Author: Guus Sliepen +Date: Thu Mar 21 23:11:53 2002 +0000 -Small fix. + Put a break on requests that run around in circles. ------------------------------------------------------------------------- -r880 | guus | 2002-02-11 15:20:21 +0100 (ma, 11 feb 2002) | 3 lines +commit f48f8f4fedba365ceea30e1133bf1c560e9a522a +Author: Guus Sliepen +Date: Tue Mar 19 22:48:25 2002 +0000 -- If no PrivateKeyFile is specified, /etc/tinc/netname/rsa_key.priv is assumed. -- Check RSA key before using it. + Updated SSSP algorithm to automatically detect indirect links (if a node uses + different addresses for connections to other nodes). ------------------------------------------------------------------------- -r879 | guus | 2002-02-11 13:33:01 +0100 (ma, 11 feb 2002) | 2 lines +commit 5a88a27742d305be48498a297b90ee3fbdd935bf +Author: Guus Sliepen +Date: Tue Mar 19 00:08:34 2002 +0000 -Sensible defaults for $INTERFACE. + Updated dutch translation. ------------------------------------------------------------------------- -r878 | guus | 2002-02-11 11:16:18 +0100 (ma, 11 feb 2002) | 2 lines +commit 5c2d74de86d1acb3774a20357ad815d000f8a7f6 +Author: Guus Sliepen +Date: Tue Mar 19 00:08:23 2002 +0000 -Last bits of the merger. + Don't use s6_addr[16|32] anymore. ------------------------------------------------------------------------- -r877 | guus | 2002-02-11 11:05:58 +0100 (ma, 11 feb 2002) | 2 lines +commit 9d99a789c38e8a1694537e427e8d4313c948b02b +Author: Guus Sliepen +Date: Tue Mar 19 00:07:09 2002 +0000 -Forgot to merge new files from pre5. + Cleanup. ------------------------------------------------------------------------- -r876 | guus | 2002-02-10 22:57:54 +0100 (zo, 10 feb 2002) | 2 lines +commit 305505f5ec4bb738f175cd897fa409f08d2971a3 +Author: Guus Sliepen +Date: Mon Mar 18 22:47:20 2002 +0000 -Merging of the entire pre5 branch. + Remember sockaddrs of listening sockets, use appropriate one when sending + UDP packets. ------------------------------------------------------------------------- -r784 | zarq | 2001-11-16 23:41:38 +0100 (vr, 16 nov 2001) | 2 lines +commit 106fc2b769a635142bf5f9233a2f03e3a0f26b7f +Author: Guus Sliepen +Date: Mon Mar 18 14:39:37 2002 +0000 -Conversion to struct addrinfo is almost complete for this file. + Fix #define s6_addr32. ------------------------------------------------------------------------- -r783 | zarq | 2001-11-16 23:40:26 +0100 (vr, 16 nov 2001) | 2 lines +commit 813c369a8faca94fc38bc66afafad063fa00f928 +Author: Guus Sliepen +Date: Mon Mar 18 14:19:02 2002 +0000 -Don't include netutl.h. + #define s6_addr32, needed for FreeBSD. ------------------------------------------------------------------------- -r782 | zarq | 2001-11-16 23:31:41 +0100 (vr, 16 nov 2001) | 2 lines +commit b2579385de427c3c03d28520d3a93bd5f9bc9488 +Author: Guus Sliepen +Date: Sun Mar 17 16:08:39 2002 +0000 -Fixed silly typo: "np" instead of "no" + Only unmap IPv6 addresses. ------------------------------------------------------------------------- -r781 | zarq | 2001-11-16 23:31:15 +0100 (vr, 16 nov 2001) | 2 lines +commit 8b84c44175fedb81ca38107e0067ddea750add00 +Author: Guus Sliepen +Date: Sun Mar 17 15:59:29 2002 +0000 -get_config_subnet needs to be fixed. + Unmap v4mapped sockaddrs. ------------------------------------------------------------------------- -r780 | zarq | 2001-11-16 18:40:50 +0100 (vr, 16 nov 2001) | 2 lines +commit 07e37f8da03fa315be39623e62d8acba617aa226 +Author: Guus Sliepen +Date: Fri Mar 15 15:50:14 2002 +0000 -route_ipv4 and route_ipv6 replaced by route_ip. + Typo. ------------------------------------------------------------------------- -r779 | zarq | 2001-11-16 18:39:59 +0100 (vr, 16 nov 2001) | 2 lines +commit e0dee537705cdbd005f6ab1fbef5ac71dc8411c0 +Author: Guus Sliepen +Date: Fri Mar 15 15:40:40 2002 +0000 -Don't include netutl.h. + Different way of detecting neighbor solicitation requests. ------------------------------------------------------------------------- -r778 | zarq | 2001-11-16 18:39:38 +0100 (vr, 16 nov 2001) | 2 lines +commit 0e93f0aa02274481c16fc9f30b795d4f063bd1c3 +Author: Guus Sliepen +Date: Fri Mar 15 15:08:21 2002 +0000 -lookup_node_udp changed. + Oops, don't forget to actually put the checksum in the response packet. ------------------------------------------------------------------------- -r777 | zarq | 2001-11-16 18:38:39 +0100 (vr, 16 nov 2001) | 2 lines +commit e1de9ca990ea638c7e297c5335be415e44c250c1 +Author: Guus Sliepen +Date: Fri Mar 15 14:41:57 2002 +0000 -First part of rewriting things to use struct addrinfo. + Neighbor solicitation requests now work (I think). ------------------------------------------------------------------------- -r776 | zarq | 2001-11-16 18:37:08 +0100 (vr, 16 nov 2001) | 2 lines +commit 4b3aef9e6992ca78f1b17b179a3051d3fec0473d +Author: Guus Sliepen +Date: Tue Mar 12 16:30:15 2002 +0000 -Added dropin replacements for get*info and helper functions. + Revert changes to Kruskal's algo. ------------------------------------------------------------------------- -r775 | zarq | 2001-11-16 17:16:33 +0100 (vr, 16 nov 2001) | 2 lines +commit f219f156cf13fd30369d7cd4632c406ffd6ff628 +Author: Guus Sliepen +Date: Tue Mar 12 14:25:04 2002 +0000 -Added HAVE_STRUCT_ADDRINFO + Put #ifdef NEIGHBORSOL around corresponding code. ------------------------------------------------------------------------- -r774 | zarq | 2001-11-16 16:56:44 +0100 (vr, 16 nov 2001) | 2 lines +commit ecad9e9289162faec7b678be54178d22876b5d90 +Author: Guus Sliepen +Date: Tue Mar 12 14:20:44 2002 +0000 -(re)added port to struct node_t + Remove silly cache thingy. ------------------------------------------------------------------------- -r773 | zarq | 2001-11-16 13:22:02 +0100 (vr, 16 nov 2001) | 2 lines +commit d6c2c4f2b7a94ef6a4db0de134d015bc8d21ffb1 +Author: Guus Sliepen +Date: Tue Mar 12 14:19:51 2002 +0000 -Don't include netutl.h. + Packet sequence number/authentication warnings only if debug_lvl >= 5. ------------------------------------------------------------------------- -r772 | zarq | 2001-11-16 13:21:22 +0100 (vr, 16 nov 2001) | 2 lines +commit 2e7db2a6936a77baa0a81eb566674bd76d204951 +Author: Guus Sliepen +Date: Tue Mar 12 13:42:23 2002 +0000 -Obsoleted. + Simplified implementation of Kruskal's minimum spanning tree algorithm. ------------------------------------------------------------------------- -r771 | zarq | 2001-11-16 13:16:28 +0100 (vr, 16 nov 2001) | 2 lines +commit d2e0ed533c8aa3c6ab538d87e004108c631cb0be +Author: Guus Sliepen +Date: Mon Mar 11 13:56:00 2002 +0000 -Don't compile/link netutl.c. + New strategy: forward icmp6 neighbor solicitations to intended target. ------------------------------------------------------------------------- -r770 | zarq | 2001-11-16 13:14:20 +0100 (vr, 16 nov 2001) | 2 lines +commit 46fa10cec7b6bf26773f5e86e7b8118d9075e807 +Author: Guus Sliepen +Date: Mon Mar 11 13:14:53 2002 +0000 -get_config_{ip,port} removed. + Try to reply to neighbor solicitation requests. ------------------------------------------------------------------------- -r769 | zarq | 2001-11-16 13:13:34 +0100 (vr, 16 nov 2001) | 2 lines +commit c2713ba7a5ff12e270d66a5d3188a3640873830e +Author: Guus Sliepen +Date: Mon Mar 11 11:45:12 2002 +0000 -Changed to use struct addrinfo where needed. + prune_connections() before build_fdset(). ------------------------------------------------------------------------- -r768 | zarq | 2001-11-16 13:10:54 +0100 (vr, 16 nov 2001) | 2 lines +commit 4fda4560bbdd41e217ce0e1a90ba98c79e4f3519 +Author: Guus Sliepen +Date: Mon Mar 11 11:23:04 2002 +0000 -Obsoleted all IP types in favor of struct addrinfo + Cleanups, spelling fixes, allow symbol names for signals (-k option), + don't remove pidfile if other tincd is still running. ------------------------------------------------------------------------- -r767 | zarq | 2001-11-16 13:08:38 +0100 (vr, 16 nov 2001) | 2 lines +commit 5ffeb13d65313d5a191a605690a4f8fdf1604b48 +Author: Guus Sliepen +Date: Sun Mar 10 16:09:15 2002 +0000 -Removed definitions of ipv4_t, ipv6_t, port_t + Don't retry to make outgoing connections when exitting. ------------------------------------------------------------------------- -r766 | zarq | 2001-11-16 13:02:17 +0100 (vr, 16 nov 2001) | 2 lines +commit 3cbe67a8de1da7bd042474de4d16cb4f7e9822ab +Author: Guus Sliepen +Date: Sun Mar 10 15:40:27 2002 +0000 -Changed lookup_connection to use struct addrinfo + Small fixes to improve portability. ------------------------------------------------------------------------- -r765 | zarq | 2001-11-16 13:01:48 +0100 (vr, 16 nov 2001) | 2 lines +commit 9de7470bfdabacec5f3769bf5cfa97ef4e481ba0 +Author: Guus Sliepen +Date: Sun Mar 10 14:07:08 2002 +0000 -Changed prototype for lookup_connection to use struct addrinfo + Autodetect $MAKE/gmake/make. ------------------------------------------------------------------------- -r764 | zarq | 2001-11-16 01:23:28 +0100 (vr, 16 nov 2001) | 3 lines +commit 0c34478cc03167208c84f3d6d2ed6e53172b4711 +Author: Guus Sliepen +Date: Sun Mar 10 14:05:35 2002 +0000 -Use struct addrinfo in connection_t to hold all host data such as IP -address and port + po/POTFILES and po/Makefile should not be generated by configure. ------------------------------------------------------------------------- -r763 | zarq | 2001-11-16 01:13:08 +0100 (vr, 16 nov 2001) | 2 lines +commit 024ab44d98883d78cefe2c622cec9831c7f19c13 +Author: Guus Sliepen +Date: Sun Mar 10 14:04:48 2002 +0000 -Deprecated get_config_ip and get_config_port + Fix forwarding of IPv6 packets. ------------------------------------------------------------------------- -r762 | zarq | 2001-11-16 00:49:46 +0100 (vr, 16 nov 2001) | 2 lines +commit 0c16add71c6432c882c6d8f538a4b2db0026ec24 +Author: Guus Sliepen +Date: Fri Mar 1 15:14:29 2002 +0000 -Check for struct addrinfo + Check if BindToDevice and PriorityInheritance are supported. ------------------------------------------------------------------------- -r761 | zarq | 2001-11-16 00:28:58 +0100 (vr, 16 nov 2001) | 2 lines +commit 7d5741859e681e6b0d0e32b978da6f309c456729 +Author: Guus Sliepen +Date: Fri Mar 1 14:33:48 2002 +0000 -Credit OpenSSH + Woops. ------------------------------------------------------------------------- -r760 | zarq | 2001-11-16 00:26:27 +0100 (vr, 16 nov 2001) | 2 lines +commit ab90fa9bd1a653a330be7ef11293000721a0e7b4 +Author: Guus Sliepen +Date: Fri Mar 1 14:25:10 2002 +0000 -Check for getnameinfo, gai_strerror, freeaddrinfo + Document and clean up MAC address expiry. ------------------------------------------------------------------------- -r759 | zarq | 2001-11-16 00:05:34 +0100 (vr, 16 nov 2001) | 2 lines +commit 14979f835df4214a7c2510852f7ffedc9e08c2c0 +Author: Guus Sliepen +Date: Fri Mar 1 14:09:31 2002 +0000 -Check for getaddrinfo + - Global time_t now, so that we don't have to call time() too often. + - MAC addresses expire after a time configurable by MACExpire (default 600 + seconds) ------------------------------------------------------------------------- -r758 | guus | 2001-11-05 20:09:08 +0100 (ma, 05 nov 2001) | 2 lines +commit 7496ecc45ab6205bcce4e576c23b9afb52004e39 +Author: Guus Sliepen +Date: Fri Mar 1 13:38:15 2002 +0000 -More fixes for Solaris. + Updated dutch translation. ------------------------------------------------------------------------- -r757 | guus | 2001-11-05 20:06:07 +0100 (ma, 05 nov 2001) | 2 lines +commit 0c879b8eeed3477b0f1cdd2f232e67e38bd9bce6 +Author: Guus Sliepen +Date: Fri Mar 1 13:38:02 2002 +0000 -Various fixes needed for Solaris. + Updated documentation. ------------------------------------------------------------------------- -r756 | guus | 2001-11-05 00:48:27 +0100 (ma, 05 nov 2001) | 2 lines +commit f93b1334e087dd7af1b87f475b2d398fdd4d56ab +Author: Guus Sliepen +Date: Fri Mar 1 13:18:54 2002 +0000 -Correctly check if subnet owner exists. + Create/bind TCP and UDP listening sockets in pairs. ------------------------------------------------------------------------- -r755 | guus | 2001-11-05 00:29:50 +0100 (ma, 05 nov 2001) | 2 lines +commit c2b738e7b51fbec2b11fbbf030b9a5a36df55fc4 +Author: Guus Sliepen +Date: Fri Mar 1 12:26:56 2002 +0000 -Be liberal in what you accept: allow unknown edges to be deleted. + If "PriorityInheritance = yes" is specified in tinc.conf, the value of the + TOS field of the tunneled packets will be passed on to the UDP packets tinc + sends out. ------------------------------------------------------------------------- -r754 | guus | 2001-11-03 23:53:02 +0100 (za, 03 nov 2001) | 2 lines +commit 80ea653e8d8050878380fbc1446571cbaf578297 +Author: Guus Sliepen +Date: Fri Mar 1 12:25:58 2002 +0000 -*** empty log message *** + Fix listening sockets. ------------------------------------------------------------------------- -r753 | guus | 2001-11-03 22:22:02 +0100 (za, 03 nov 2001) | 2 lines +commit 7f58ed7685f9fcd5271359a8c896670a835e1f95 +Author: Guus Sliepen +Date: Fri Mar 1 11:18:34 2002 +0000 -Several bugfixes. + Make BindToInterface work. ------------------------------------------------------------------------- -r752 | guus | 2001-11-03 22:21:04 +0100 (za, 03 nov 2001) | 2 lines +commit 17bc5220c332fdd083fd47fc600010f85171adc7 +Author: Guus Sliepen +Date: Wed Feb 27 22:37:55 2002 +0000 -Use PEM functions as suggested by OpenSSL docs. + Fix send_request() bug. ------------------------------------------------------------------------- -r751 | guus | 2001-10-31 21:37:54 +0100 (wo, 31 okt 2001) | 2 lines +commit 50403909b6bf6536924d4693bb1f32c248f17fda +Author: Guus Sliepen +Date: Tue Feb 26 23:26:41 2002 +0000 -Some very small fixes + Allow multiple listening sockets. ------------------------------------------------------------------------- -r750 | guus | 2001-10-31 21:22:52 +0100 (wo, 31 okt 2001) | 2 lines +commit 2ac7be0d51a112108dc6c2b1c6f46da022f72f40 +Author: Guus Sliepen +Date: Tue Feb 26 22:47:51 2002 +0000 -Avoid connecting to another node twice, and check name of outgoing connections. + Tweaking IPv6 support. ------------------------------------------------------------------------- -r749 | guus | 2001-10-31 21:07:17 +0100 (wo, 31 okt 2001) | 2 lines +commit 23fda5688e8a109f8a50511538b14e4fbe4f738c +Author: Guus Sliepen +Date: Wed Feb 20 22:37:38 2002 +0000 -Show cfg->variable instead of cfg->value when complaining about wrong type. + - Change SA_LEN to SALEN, former one is already defined on some platforms. + - Use SALEN everywhere appropriate. ------------------------------------------------------------------------- -r748 | guus | 2001-10-31 21:02:06 +0100 (wo, 31 okt 2001) | 2 lines +commit dbc5b5bb5eb3096ad930aa6b590deaba2a103dfc +Author: Guus Sliepen +Date: Wed Feb 20 22:15:32 2002 +0000 -Don't forget to read public RSA key when making an outgoing connection. + - Use gai_strerror() where appropriate + - Clear hints before using them with getaddrinfo() + - Use sa_len on platforms that support them ------------------------------------------------------------------------- -r747 | guus | 2001-10-31 13:50:24 +0100 (wo, 31 okt 2001) | 5 lines +commit 28cc9a6488f78c72152251f6fa2ee84d417223e8 +Author: Guus Sliepen +Date: Wed Feb 20 19:31:15 2002 +0000 -- Small fixes to graph algorithms -- More control over tap device, ability to set interface name to something - other than the netname. -- Export NETNAME, DEVICE and INTERFACE environment variables to scripts. + Preserve inpkt->len, needed for broadcasts. ------------------------------------------------------------------------- -r746 | guus | 2001-10-30 17:34:32 +0100 (di, 30 okt 2001) | 2 lines +commit c6d01588312bec7691e72b42cf20c59ffe2749c2 +Author: Guus Sliepen +Date: Wed Feb 20 19:25:09 2002 +0000 -More updates to protocol handlers and reimplemented terminate_connection(). + Protocol now also exchanges cipher/digest/maclength/compression for the + meta connection. ------------------------------------------------------------------------- -r745 | guus | 2001-10-30 13:59:12 +0100 (di, 30 okt 2001) | 2 lines +commit 626d5956d2bb0660ba315fba77da6cec9776fd3b +Author: Guus Sliepen +Date: Wed Feb 20 17:16:15 2002 +0000 -Various fixes, tinc is now somewhat capable of actually working again. + Cache results of lookup_subnet_...(). ------------------------------------------------------------------------- -r744 | guus | 2001-10-29 14:14:57 +0100 (ma, 29 okt 2001) | 2 lines +commit e8e69460a7090aaf6ecda8970d3060695de81b00 +Author: Guus Sliepen +Date: Wed Feb 20 17:15:33 2002 +0000 -Working version of Kruskal's algorithm. The running time is very bad though. + Fix maskcmp() and maskcpy(). ------------------------------------------------------------------------- -r742 | guus | 2001-10-28 23:42:49 +0100 (zo, 28 okt 2001) | 4 lines +commit ed509312906625acee4007da6262de3898846888 +Author: Guus Sliepen +Date: Wed Feb 20 16:04:59 2002 +0000 -- More changes needed for Kruskal's algorithm -- Implemented a breadth-first search algorithm as a cheap substitution for a - single-source shortest path algorithm. + Forward packets in router mode. ------------------------------------------------------------------------- -r741 | guus | 2001-10-28 11:16:18 +0100 (zo, 28 okt 2001) | 3 lines +commit 8c91fac31570594b6249d632cefe768f33c54b19 +Author: Guus Sliepen +Date: Wed Feb 20 16:04:39 2002 +0000 -- More s/vertex/edge/g -- Implementation of Kruskal's minimum spanning tree algorithm. + Use AF_UNSPEC for listening sockets if AddressFamily = any. ------------------------------------------------------------------------- -r739 | guus | 2001-10-28 09:41:19 +0100 (zo, 28 okt 2001) | 2 lines +commit 76f01453dfa157b0070751b1025e55a1e36ebdca +Author: Guus Sliepen +Date: Wed Feb 20 16:04:07 2002 +0000 -What was I thinking? s/vertex/edge/g. + Fix segfault when receiving HUP signal. ------------------------------------------------------------------------- -r736 | guus | 2001-10-27 17:19:13 +0200 (za, 27 okt 2001) | 2 lines +commit c2b9c06062d36bde859b630b99a08c7b7428e721 +Author: Guus Sliepen +Date: Mon Feb 18 16:25:19 2002 +0000 -Various small fixes to make tinc runnable again. + - Non-blocking connect()s. + - Socket handling revamped to use sockaddr_t. + - tinc can now tunnel over IPv6. + - Handle all addresses and subnets in network byte order. + Only convert them when they need to be printed. + - IPv6 subnets bigger than /128 now work. + - Use %s and strerror(errno) instead of %m. ------------------------------------------------------------------------- -r735 | guus | 2001-10-27 15:13:35 +0200 (za, 27 okt 2001) | 2 lines +commit fc674eaae14ed2e07abc0df1285b1bd70e0d27cc +Author: Guus Sliepen +Date: Tue Feb 12 14:42:37 2002 +0000 -Make sure everything links. + Add check for NetBSD. ------------------------------------------------------------------------- -r734 | guus | 2001-10-27 14:13:17 +0200 (za, 27 okt 2001) | 8 lines +commit 2fb8a62edef7cb0988e44f92c3948cde6f34875e +Author: Guus Sliepen +Date: Tue Feb 12 14:40:12 2002 +0000 -Big bad commit: -- Transition to new node/vertex/connection structures -- Use new configuration handling everywhere -- Linux tun/tap device handling cleanup -- Start of IPv6 support in route.c + Added device.c for NetBSD, actually a copy of the OpenBSD one. -It compiles, but it won't link. +commit f64b41a73b3b432aae17ba990414e0be2f61ce62 +Author: Guus Sliepen +Date: Tue Feb 12 14:36:45 2002 +0000 ------------------------------------------------------------------------- -r733 | guus | 2001-10-13 15:53:07 +0200 (za, 13 okt 2001) | 2 lines + Get rid of sys/signal.h. -Support new files (node/vertex/device.[ch]) and OpenBSD. +commit dd611fb4f91b9b17c20c458694d2765b22814c5f +Author: Guus Sliepen +Date: Tue Feb 12 14:29:00 2002 +0000 ------------------------------------------------------------------------- -r732 | guus | 2001-10-12 17:52:03 +0200 (vr, 12 okt 2001) | 2 lines + Don't use sa_sigaction (which NetBSD doesn't like) at all if we don't use siginfo. -Forgot the tun specific stuff. +commit d9a62c6354d1e2ad78ee8c610518ae9f9ab012d1 +Author: Guus Sliepen +Date: Mon Feb 11 15:59:18 2002 +0000 ------------------------------------------------------------------------- -r731 | guus | 2001-10-12 17:49:11 +0200 (vr, 12 okt 2001) | 2 lines + Added support for packet compression, thanks to Mark Glines. + Add "Compression = " to the host config files, where level can be + 0 (off), or any integer between 1 (fast) and 9 (best). -Added OpenBSD tun device handling. Untested though. +commit 94b171b3051b999e619ae19e1c9c29d356606788 +Author: Guus Sliepen +Date: Mon Feb 11 14:20:46 2002 +0000 ------------------------------------------------------------------------- -r729 | guus | 2001-10-12 17:38:35 +0200 (vr, 12 okt 2001) | 2 lines + Small fix. -Forgot to remove some old #ifdef stuff. +commit 1708997bc8ab55122f9de9cc8b81397d3a003ea9 +Author: Guus Sliepen +Date: Mon Feb 11 14:20:21 2002 +0000 ------------------------------------------------------------------------- -r728 | guus | 2001-10-12 17:33:21 +0200 (vr, 12 okt 2001) | 2 lines + - If no PrivateKeyFile is specified, /etc/tinc/netname/rsa_key.priv is assumed. + - Check RSA key before using it. -Solaris tun device handling cleaned up a bit and added. +commit 1c34ba7fb8580949f3bd3a0d804747bbaea28e36 +Author: Guus Sliepen +Date: Mon Feb 11 12:33:01 2002 +0000 ------------------------------------------------------------------------- -r726 | guus | 2001-10-12 17:22:59 +0200 (vr, 12 okt 2001) | 2 lines + Sensible defaults for $INTERFACE. -Added FreeBSD tap device handling. +commit 24cc2a9065a4e962fb05addac47322930099a4b5 +Author: Guus Sliepen +Date: Mon Feb 11 10:16:18 2002 +0000 ------------------------------------------------------------------------- -r724 | guus | 2001-10-12 17:16:03 +0200 (vr, 12 okt 2001) | 4 lines + Last bits of the merger. -- Split tap device stuff out of net.[ch] -- Each OS gets it's own device.c to get rid of evil #ifdefs. -- Cleaned up Linux ethertap and tun/tap handling. +commit 5bf4b88666ecafe190e8ed71d6c14c9de8d16e1f +Author: Guus Sliepen +Date: Mon Feb 11 10:05:58 2002 +0000 ------------------------------------------------------------------------- -r721 | guus | 2001-10-10 22:35:10 +0200 (wo, 10 okt 2001) | 2 lines + Forgot to merge new files from pre5. -More updates to new node/vertex/connection combo. +commit f0aa9641e82fb6e09c1e485366d14dddaa7f7c36 +Author: Guus Sliepen +Date: Sun Feb 10 21:57:54 2002 +0000 ------------------------------------------------------------------------- -r720 | guus | 2001-10-10 22:34:27 +0200 (wo, 10 okt 2001) | 6 lines + Merging of the entire pre5 branch. -Revamp configuration handling: -- Store everything in AVL trees (fast lookup) -- No need for hazahaza anymore -- Parse values when needed -- This simplifies a lot of config variable lookups. +commit c2752b961c9262386b940c2c053b9909bee22859 +Author: Ivo Timmermans +Date: Fri Nov 16 22:41:38 2001 +0000 ------------------------------------------------------------------------- -r719 | guus | 2001-10-10 11:42:29 +0200 (wo, 10 okt 2001) | 3 lines + Conversion to struct addrinfo is almost complete for this file. -Removed everything from connection.c that has already been moved to node.c and -vertex.c. +commit 4f47da5b87ef7da608c7e44026122f3d95deb2eb +Author: Ivo Timmermans +Date: Fri Nov 16 22:40:26 2001 +0000 ------------------------------------------------------------------------- -r718 | guus | 2001-10-10 10:49:47 +0200 (wo, 10 okt 2001) | 3 lines + Don't include netutl.h. -Further implementation of doc/CONNECTIVITY. connection.[ch] is now split into a -node, vertex and connection part. +commit a59bbc72317c9cd97243a9cbf49db01ff249eb1e +Author: Ivo Timmermans +Date: Fri Nov 16 22:31:41 2001 +0000 ------------------------------------------------------------------------- -r715 | wsl | 2001-10-09 21:41:56 +0200 (di, 09 okt 2001) | 2 lines + Fixed silly typo: "np" instead of "no" -make is not always GNU make. +commit bf664c054fdabc30679367a752a27bb769655e4d +Author: Ivo Timmermans +Date: Fri Nov 16 22:31:15 2001 +0000 ------------------------------------------------------------------------- -r714 | guus | 2001-10-09 21:37:10 +0200 (di, 09 okt 2001) | 2 lines + get_config_subnet needs to be fixed. -Small corrections. +commit 9b2b3747340173590b8f6f5fbdd060b42985f026 +Author: Ivo Timmermans +Date: Fri Nov 16 17:40:50 2001 +0000 ------------------------------------------------------------------------- -r713 | guus | 2001-10-09 21:30:30 +0200 (di, 09 okt 2001) | 2 lines + route_ipv4 and route_ipv6 replaced by route_ip. -Started implementing doc/CONNECTIVITY. +commit a4938b22e7502579ce44cac42410111db11256eb +Author: Ivo Timmermans +Date: Fri Nov 16 17:39:59 2001 +0000 ------------------------------------------------------------------------- -r710 | guus | 2001-10-08 17:47:30 +0200 (ma, 08 okt 2001) | 2 lines + Don't include netutl.h. -Updated dutch translation. +commit ccda709f8243949a3c0ffcc6133d8d8fc5125f2e +Author: Ivo Timmermans +Date: Fri Nov 16 17:39:38 2001 +0000 ------------------------------------------------------------------------- -r709 | guus | 2001-10-08 17:37:14 +0200 (ma, 08 okt 2001) | 3 lines + lookup_node_udp changed. -Fix bug when dropping an old connection in favour of a new one from the -same host. +commit 836766d4c5bc47682ab69c57337157c879517670 +Author: Ivo Timmermans +Date: Fri Nov 16 17:38:39 2001 +0000 ------------------------------------------------------------------------- -r708 | guus | 2001-10-08 15:37:30 +0200 (ma, 08 okt 2001) | 4 lines + First part of rewriting things to use struct addrinfo. -- Use ping timeout mechanism to close connections that don't authenticate - in time. -- Fix potential segmentation fault in check_dead_connections(). +commit 2ec5b5f8621d9fb91181ab155084daa1bb2d1a54 +Author: Ivo Timmermans +Date: Fri Nov 16 17:37:08 2001 +0000 ------------------------------------------------------------------------- -r707 | guus | 2001-10-08 13:59:08 +0200 (ma, 08 okt 2001) | 3 lines + Added dropin replacements for get*info and helper functions. -Fix bug where tinc would crash because of a portscan or a connection from a -tinc daemon with a different version. +commit aabe59f6305cdd46220e95d8927a1636d4b4819d +Author: Ivo Timmermans +Date: Fri Nov 16 16:16:33 2001 +0000 ------------------------------------------------------------------------- -r706 | guus | 2001-10-08 13:47:55 +0200 (ma, 08 okt 2001) | 4 lines + Added HAVE_STRUCT_ADDRINFO -- Renamed lastbutonehop to prevhop. -- Added connection_t *via to connection_t, this keeps record of where - to send UDP packets to. +commit 251f87c842b62cf770129d8a953fb06ef5d0e466 +Author: Ivo Timmermans +Date: Fri Nov 16 15:56:44 2001 +0000 ------------------------------------------------------------------------- -r705 | guus | 2001-09-25 15:39:11 +0200 (di, 25 sep 2001) | 2 lines + (re)added port to struct node_t -Fill in next- and lastbutonehop for myself. +commit 6cf744e4b29cfe3b135b6553851816802ba3d8a8 +Author: Ivo Timmermans +Date: Fri Nov 16 12:22:02 2001 +0000 ------------------------------------------------------------------------- -r704 | guus | 2001-09-25 15:35:45 +0200 (di, 25 sep 2001) | 2 lines + Don't include netutl.h. -Try next connectto instead of the same over and over. +commit a79252af4383b8cd71cf0d13f1ae040d518517bf +Author: Ivo Timmermans +Date: Fri Nov 16 12:21:22 2001 +0000 ------------------------------------------------------------------------- -r703 | guus | 2001-09-24 16:16:29 +0200 (ma, 24 sep 2001) | 2 lines + Obsoleted. -Show next- and lastbutonehop when dumping connectionlist to syslog. +commit 331d9402e892b4baa9cadbbb364073ae10b58d99 +Author: Ivo Timmermans +Date: Fri Nov 16 12:16:28 2001 +0000 ------------------------------------------------------------------------- -r702 | guus | 2001-09-24 16:12:00 +0200 (ma, 24 sep 2001) | 4 lines + Don't compile/link netutl.c. -Not only keep track of nexthop, but also of lastbutonehop. If destination cl -wants indirectdata, send it to the lastbutonehop instead, unless it too has -requested so, and so on. +commit f95e6ca8f6976d7a15f4623e25c85e1c7f82c04b +Author: Ivo Timmermans +Date: Fri Nov 16 12:14:20 2001 +0000 ------------------------------------------------------------------------- -r701 | guus | 2001-09-24 15:31:15 +0200 (ma, 24 sep 2001) | 3 lines + get_config_{ip,port} removed. -- Try old TUN/TAP ioctl() request if the one from if_tun.h fails. -- Be more verbose about the kind of tap device used. +commit 31db57bb4a00f5ca3743b89f8bb2fbd39919bf28 +Author: Ivo Timmermans +Date: Fri Nov 16 12:13:34 2001 +0000 ------------------------------------------------------------------------- -r700 | zarq | 2001-09-05 20:38:09 +0200 (wo, 05 sep 2001) | 3 lines + Changed to use struct addrinfo where needed. -Killing tincd with SIGINT causes it to toggle between the current -debug level and level 5. Useful to debug a running tincd. +commit f1b20b3ded5b360e426e094cf79df3bf97f350b4 +Author: Ivo Timmermans +Date: Fri Nov 16 12:10:54 2001 +0000 ------------------------------------------------------------------------- -r699 | guus | 2001-09-01 14:46:49 +0200 (za, 01 sep 2001) | 2 lines + Obsoleted all IP types in favor of struct addrinfo -config_t* is a const parameter in get_config_val(). +commit fb6dc0b0890ebae2471e00e7a3e1d86c1fc3d646 +Author: Ivo Timmermans +Date: Fri Nov 16 12:08:38 2001 +0000 ------------------------------------------------------------------------- -r698 | guus | 2001-09-01 14:36:53 +0200 (za, 01 sep 2001) | 2 lines + Removed definitions of ipv4_t, ipv6_t, port_t -Optional signal number for -k option. +commit 3ef15f2554d1819d6c7d2573dac6039f2e76b638 +Author: Ivo Timmermans +Date: Fri Nov 16 12:02:17 2001 +0000 ------------------------------------------------------------------------- -r697 | guus | 2001-09-01 14:36:06 +0200 (za, 01 sep 2001) | 2 lines + Changed lookup_connection to use struct addrinfo -Revised reconnection mechanism, always try out all ConnectTo lines. +commit 74e1299fb58025f7506c7e2608c353a76f98d8df +Author: Ivo Timmermans +Date: Fri Nov 16 12:01:48 2001 +0000 ------------------------------------------------------------------------- -r696 | guus | 2001-09-01 14:02:39 +0200 (za, 01 sep 2001) | 3 lines + Changed prototype for lookup_connection to use struct addrinfo -Remove IndirectData support for now, new implementation will be added -later. +commit 51b72b75f254c956b62be9dfca642145b199415f +Author: Ivo Timmermans +Date: Fri Nov 16 00:23:28 2001 +0000 ------------------------------------------------------------------------- -r695 | guus | 2001-08-28 22:52:39 +0200 (di, 28 aug 2001) | 2 lines + Use struct addrinfo in connection_t to hold all host data such as IP + address and port -Fix signed comparison bug in lookup_subnet_ipv4(). +commit 72395f989cb44132d7c756c91b3a6d8ba63517e5 +Author: Ivo Timmermans +Date: Fri Nov 16 00:13:08 2001 +0000 ------------------------------------------------------------------------- -r694 | guus | 2001-08-17 20:14:04 +0200 (vr, 17 aug 2001) | 2 lines + Deprecated get_config_ip and get_config_port -Don't send DEL_HOSTs when !status.meta +commit 93cd0e33defba46f8e51d9a98a94599ceb0d521c +Author: Ivo Timmermans +Date: Thu Nov 15 23:49:46 2001 +0000 ------------------------------------------------------------------------- -r693 | guus | 2001-07-24 22:14:30 +0200 (di, 24 jul 2001) | 2 lines + Check for struct addrinfo -Explicitly log which type of tunnel device is used. +commit b16bf68a6dc27b364cb76156a7be0208594f1e94 +Author: Ivo Timmermans +Date: Thu Nov 15 23:28:58 2001 +0000 ------------------------------------------------------------------------- -r692 | guus | 2001-07-24 22:13:42 +0200 (di, 24 jul 2001) | 2 lines + Credit OpenSSH -The val variable in a config_t is never used as a long. +commit 18269cfbe831902b97a6171ba0346fd323583e48 +Author: Ivo Timmermans +Date: Thu Nov 15 23:26:27 2001 +0000 ------------------------------------------------------------------------- -r691 | guus | 2001-07-24 22:04:22 +0200 (di, 24 jul 2001) | 3 lines + Check for getnameinfo, gai_strerror, freeaddrinfo -Write public key to rsa_key.pub instead of rsa_key.priv (if not host -configuration file is found). +commit ae11e7c3d71893c5200b12682839538a52df37b8 +Author: Ivo Timmermans +Date: Thu Nov 15 23:05:34 2001 +0000 ------------------------------------------------------------------------- -r690 | guus | 2001-07-24 22:03:40 +0200 (di, 24 jul 2001) | 2 lines + Check for getaddrinfo -Don't use %m in fprintf(). +commit e06415e3d9d08cd33c5983a2c49c4101377160c2 +Author: Guus Sliepen +Date: Mon Nov 5 19:09:08 2001 +0000 ------------------------------------------------------------------------- -r689 | guus | 2001-07-24 10:51:36 +0200 (di, 24 jul 2001) | 2 lines + More fixes for Solaris. -More on edges. +commit 25a804c94ef0dbc4e5582ea6d8459d5f9a3fe06c +Author: Guus Sliepen +Date: Mon Nov 5 19:06:07 2001 +0000 ------------------------------------------------------------------------- -r688 | guus | 2001-07-24 00:06:22 +0200 (di, 24 jul 2001) | 2 lines + Various fixes needed for Solaris. -Discuss how sending ADD_EDGEs would be better than sending ADD_HOSTs. +commit b2d5002ff1ccd44fbf3a94e4c41909ab6141f3bb +Author: Guus Sliepen +Date: Sun Nov 4 23:48:27 2001 +0000 ------------------------------------------------------------------------- -r687 | guus | 2001-07-22 19:41:52 +0200 (zo, 22 jul 2001) | 2 lines + Correctly check if subnet owner exists. -Written down a possible solution. +commit ede6671c1354eeab86936efda32f6cdb3b3fd8d5 +Author: Guus Sliepen +Date: Sun Nov 4 23:29:50 2001 +0000 ------------------------------------------------------------------------- -r686 | guus | 2001-07-22 17:25:13 +0200 (zo, 22 jul 2001) | 2 lines + Be liberal in what you accept: allow unknown edges to be deleted. -Correctie. +commit cf0e133e191cb40954bf5b6ee0a579442fe4b60b +Author: Guus Sliepen +Date: Sat Nov 3 22:53:02 2001 +0000 ------------------------------------------------------------------------- -r685 | guus | 2001-07-22 16:58:18 +0200 (zo, 22 jul 2001) | 2 lines + *** empty log message *** -Small update. +commit e5047d2835f0828a9c334cc3d928c2322abfefb7 +Author: Guus Sliepen +Date: Sat Nov 3 21:22:02 2001 +0000 ------------------------------------------------------------------------- -r684 | guus | 2001-07-22 16:46:11 +0200 (zo, 22 jul 2001) | 2 lines + Several bugfixes. -Described problem in more detail. +commit 8910cbd67e13450e93816ecafa0cc5be5e4c2378 +Author: Guus Sliepen +Date: Sat Nov 3 21:21:04 2001 +0000 ------------------------------------------------------------------------- -r683 | guus | 2001-07-22 16:04:38 +0200 (zo, 22 jul 2001) | 2 lines + Use PEM functions as suggested by OpenSSL docs. -Started writing a document about how daemons connect to each other. +commit 8e74c5bee48f2ef363193044d5309a65e91c70d8 +Author: Guus Sliepen +Date: Wed Oct 31 20:37:54 2001 +0000 ------------------------------------------------------------------------- -r681 | guus | 2001-07-21 22:21:25 +0200 (za, 21 jul 2001) | 3 lines + Some very small fixes -Woohoo! tinc now compiles, runs and actually *works* on Solaris! -Tested on a SparcStation 20MP running Solaris 7. (Thanks, jiggel!) +commit ffb88ff6410f33de92db108bd1e0c3a915368214 +Author: Guus Sliepen +Date: Wed Oct 31 20:22:52 2001 +0000 ------------------------------------------------------------------------- -r680 | guus | 2001-07-21 17:46:34 +0200 (za, 21 jul 2001) | 2 lines + Avoid connecting to another node twice, and check name of outgoing connections. -Always close all sockets in terminate_connection(). +commit 6d333ad680465c26953ad4c8ca9140e27da868c5 +Author: Guus Sliepen +Date: Wed Oct 31 20:07:17 2001 +0000 ------------------------------------------------------------------------- -r679 | guus | 2001-07-21 17:34:18 +0200 (za, 21 jul 2001) | 3 lines + Show cfg->variable instead of cfg->value when complaining about wrong type. -Updated terminate_connection() so you can choose if DEL_HOSTs should be -sent or not. +commit 54b756f7dfb71c5622b7738fd449e126da959864 +Author: Guus Sliepen +Date: Wed Oct 31 20:02:06 2001 +0000 ------------------------------------------------------------------------- -r678 | guus | 2001-07-20 22:25:10 +0200 (vr, 20 jul 2001) | 6 lines + Don't forget to read public RSA key when making an outgoing connection. -Added purge_tree for connection_t's which are no longer in the connection, -active or id trees, but which may still be referenced. This tree is flushed -when it is safe, this replaces purge_connection_tree(). +commit c0a3f67a5d66088aaf526f1461986f9e86d5dd1f +Author: Guus Sliepen +Date: Wed Oct 31 12:50:24 2001 +0000 -Also lots of bugfixes related to the new trees. + - Small fixes to graph algorithms + - More control over tap device, ability to set interface name to something + other than the netname. + - Export NETNAME, DEVICE and INTERFACE environment variables to scripts. ------------------------------------------------------------------------- -r677 | guus | 2001-07-20 15:54:19 +0200 (vr, 20 jul 2001) | 2 lines +commit 2165931c62f0433fd97bd3ac6aefea3627218946 +Author: Guus Sliepen +Date: Tue Oct 30 16:34:32 2001 +0000 -Remove all unnecessary status.meta and status.active checks. + More updates to protocol handlers and reimplemented terminate_connection(). ------------------------------------------------------------------------- -r676 | guus | 2001-07-19 14:29:40 +0200 (do, 19 jul 2001) | 2 lines +commit 87ad5c97a9a73a65050ad7adce34503f856d8665 +Author: Guus Sliepen +Date: Tue Oct 30 12:59:12 2001 +0000 -Correctly use the active_tree. + Various fixes, tinc is now somewhat capable of actually working again. ------------------------------------------------------------------------- -r675 | guus | 2001-07-15 20:07:31 +0200 (zo, 15 jul 2001) | 6 lines +commit cc9473d8c6467e9eaa82fe8a639d8edba232ee76 +Author: Guus Sliepen +Date: Mon Oct 29 13:14:57 2001 +0000 -Split connection list into two lists: - - one list to handle all incoming/outgoing TCP connections - - another list to handle all UDP connections + Working version of Kruskal's algorithm. The running time is very bad though. -This will prevent race conditions. +commit b6298e2c082035b8238ea08673ced15d0fb7b89a +Author: Guus Sliepen +Date: Sun Oct 28 22:42:49 2001 +0000 ------------------------------------------------------------------------- -r674 | guus | 2001-07-15 16:21:12 +0200 (zo, 15 jul 2001) | 2 lines + - More changes needed for Kruskal's algorithm + - Implemented a breadth-first search algorithm as a cheap substitution for a + single-source shortest path algorithm. -Correct inclusion of standard if_tun.h header file. +commit 66067cc9c1347fb2de35660d531fdd4be8aede6a +Author: Guus Sliepen +Date: Sun Oct 28 10:16:18 2001 +0000 ------------------------------------------------------------------------- -r673 | guus | 2001-07-04 10:43:32 +0200 (wo, 04 jul 2001) | 2 lines + - More s/vertex/edge/g + - Implementation of Kruskal's minimum spanning tree algorithm. -Don't load table of verbose OpenSSL errormessages. +commit 94497336efc1cc60561575e74d420e9e8e8c657e +Author: Guus Sliepen +Date: Sun Oct 28 08:41:19 2001 +0000 ------------------------------------------------------------------------- -r672 | guus | 2001-07-04 10:41:36 +0200 (wo, 04 jul 2001) | 3 lines + What was I thinking? s/vertex/edge/g. -- Always use instead of just -- Check if RAND_pseudo_bytes() exists, otherwise just use RAND_bytes() +commit b98d9787fdde54f33dcdb376e1e018cd418aff8d +Author: Guus Sliepen +Date: Sat Oct 27 15:19:13 2001 +0000 ------------------------------------------------------------------------- -r671 | guus | 2001-07-01 23:42:13 +0200 (zo, 01 jul 2001) | 2 lines + Various small fixes to make tinc runnable again. -Check for all potential duplicate entries in the id tree. +commit ac066bb057dcb187bf91670793ba5e6ca456e052 +Author: Guus Sliepen +Date: Sat Oct 27 13:13:35 2001 +0000 ------------------------------------------------------------------------- -r670 | guus | 2001-07-01 11:21:14 +0200 (zo, 01 jul 2001) | 2 lines + Make sure everything links. -Fix compiler warning. +commit 82e383710980534d38bb9a8ef22f20677cd85861 +Author: Guus Sliepen +Date: Sat Oct 27 12:13:17 2001 +0000 ------------------------------------------------------------------------- -r669 | guus | 2001-07-01 11:21:01 +0200 (zo, 01 jul 2001) | 2 lines + Big bad commit: + - Transition to new node/vertex/connection structures + - Use new configuration handling everywhere + - Linux tun/tap device handling cleanup + - Start of IPv6 support in route.c + + It compiles, but it won't link. -Fix printf format bug. +commit 1935c44a1e8ab7c31c836f90215e3c5b5f8dd776 +Author: Guus Sliepen +Date: Sat Oct 13 13:53:07 2001 +0000 ------------------------------------------------------------------------- -r668 | guus | 2001-07-01 11:06:17 +0200 (zo, 01 jul 2001) | 2 lines + Support new files (node/vertex/device.[ch]) and OpenBSD. -More items marked as done. +commit 26e517dd37e995fe9db518f7ebeff023fc73ff1b +Author: Guus Sliepen +Date: Fri Oct 12 15:52:03 2001 +0000 ------------------------------------------------------------------------- -r667 | guus | 2001-06-29 17:38:40 +0200 (vr, 29 jun 2001) | 2 lines + Forgot the tun specific stuff. -Dutch translation updated. +commit ad61c20f42d2bee5cc7976bec4370cf4747b42c3 +Author: Guus Sliepen +Date: Fri Oct 12 15:49:11 2001 +0000 ------------------------------------------------------------------------- -r666 | guus | 2001-06-29 17:33:18 +0200 (vr, 29 jun 2001) | 2 lines + Added OpenBSD tun device handling. Untested though. -Update of RedHat build scripts. +commit 0c6321a67f92981d3adbaf4f5c2b9867c7968964 +Author: Guus Sliepen +Date: Fri Oct 12 15:38:35 2001 +0000 ------------------------------------------------------------------------- -r665 | guus | 2001-06-29 17:32:26 +0200 (vr, 29 jun 2001) | 3 lines + Forgot to remove some old #ifdef stuff. -It appears that autogen.sh doesn't like es.po if it isn't mentioned in -the makefile/configure scripts. +commit 6014c7e6374089bfccea7467c2c7f4b23fefa265 +Author: Guus Sliepen +Date: Fri Oct 12 15:33:21 2001 +0000 ------------------------------------------------------------------------- -r663 | guus | 2001-06-29 16:15:46 +0200 (vr, 29 jun 2001) | 2 lines + Solaris tun device handling cleaned up a bit and added. -Check for dlopen in standard libraries first (needed for DEC OSF). +commit 623c7ee0308aede8eada552d6ae33710ae24d176 +Author: Guus Sliepen +Date: Fri Oct 12 15:22:59 2001 +0000 ------------------------------------------------------------------------- -r662 | guus | 2001-06-29 15:09:55 +0200 (vr, 29 jun 2001) | 2 lines + Added FreeBSD tap device handling. -Fix gcc 3.0 warnings. +commit ec34f25228d7a0007ce6bcb1e97f263868e9129d +Author: Guus Sliepen +Date: Fri Oct 12 15:16:03 2001 +0000 ------------------------------------------------------------------------- -r661 | guus | 2001-06-29 15:09:32 +0200 (vr, 29 jun 2001) | 2 lines + - Split tap device stuff out of net.[ch] + - Each OS gets it's own device.c to get rid of evil #ifdefs. + - Cleaned up Linux ethertap and tun/tap handling. -Log error if two hosts connect with same IP/port tuple. +commit 0bbace18e96cd6fc32dfa23ffd55f73ff96e8c6f +Author: Guus Sliepen +Date: Wed Oct 10 20:35:10 2001 +0000 ------------------------------------------------------------------------- -r660 | guus | 2001-06-29 13:09:13 +0200 (vr, 29 jun 2001) | 2 lines + More updates to new node/vertex/connection combo. -Also remove po/Makefile.in.in, which is generated by autogen.sh. +commit ea607d2d9292d3969f9d164b432dc64a33c2dade +Author: Guus Sliepen +Date: Wed Oct 10 20:34:27 2001 +0000 ------------------------------------------------------------------------- -r659 | guus | 2001-06-29 13:03:27 +0200 (vr, 29 jun 2001) | 2 lines + Revamp configuration handling: + - Store everything in AVL trees (fast lookup) + - No need for hazahaza anymore + - Parse values when needed + - This simplifies a lot of config variable lookups. -es.po revived. +commit 5904806dc80830d4eddca857a41db2fc25598201 +Author: Guus Sliepen +Date: Wed Oct 10 09:42:29 2001 +0000 ------------------------------------------------------------------------- -r658 | guus | 2001-06-29 12:30:18 +0200 (vr, 29 jun 2001) | 5 lines + Removed everything from connection.c that has already been moved to node.c and + vertex.c. -Execute tinc-down BEFORE tap device is closed. This is a. more symmetric -(tinc-up is started after tap device is opened) and b. is needed for -tun/tap device, where the interface does not exist anymore after the -device file is closed. +commit ec0c16b9b63f361b11a757ee1641d562e4811f93 +Author: Guus Sliepen +Date: Wed Oct 10 08:49:47 2001 +0000 ------------------------------------------------------------------------- -r657 | guus | 2001-06-29 12:27:57 +0200 (vr, 29 jun 2001) | 2 lines + Further implementation of doc/CONNECTIVITY. connection.[ch] is now split into a + node, vertex and connection part. -Don't build Spanish translation. +commit 75e1ae3a287642ca4281792c94ecd07332f39c08 +Author: Wessel Dankers +Date: Tue Oct 9 19:41:56 2001 +0000 ------------------------------------------------------------------------- -r656 | guus | 2001-06-29 12:27:33 +0200 (vr, 29 jun 2001) | 2 lines + make is not always GNU make. -ABOUT-NLS is created by autogen.sh. +commit f22b9417510cca258785f8958c8dfed90e26d81b +Author: Guus Sliepen +Date: Tue Oct 9 19:37:10 2001 +0000 ------------------------------------------------------------------------- -r655 | guus | 2001-06-29 12:23:46 +0200 (vr, 29 jun 2001) | 3 lines + Small corrections. -Spanish translation removed. Nobody maintains it, and it is severely -outdated. +commit 49a2cd806c73cff1ab6a712a996c7f7d4e1f32c0 +Author: Guus Sliepen +Date: Tue Oct 9 19:30:30 2001 +0000 ------------------------------------------------------------------------- -r654 | zarq | 2001-06-27 00:00:57 +0200 (wo, 27 jun 2001) | 2 lines + Started implementing doc/CONNECTIVITY. -Small fix to make it compile again +commit 5926c82b9a29031a8c619432869d1549b51b62a0 +Author: Guus Sliepen +Date: Mon Oct 8 15:47:30 2001 +0000 ------------------------------------------------------------------------- -r653 | guus | 2001-06-21 20:28:52 +0200 (do, 21 jun 2001) | 4 lines + Updated dutch translation. -Reinstated search for if_tun.h in kernel source tree, because apparently -/usr/include/linux does not always have the same contents as the include -files from the currently running kernel. +commit fcc3ded75fe9f831aeb8678ee5e3926bf4168906 +Author: Guus Sliepen +Date: Mon Oct 8 15:37:14 2001 +0000 ------------------------------------------------------------------------- -r652 | guus | 2001-06-21 18:37:47 +0200 (do, 21 jun 2001) | 2 lines + Fix bug when dropping an old connection in favour of a new one from the + same host. -Remove #warnings I used for debugging stuff. +commit 1ef90a87fd9fd53c25a43455ffaac5274a63dc08 +Author: Guus Sliepen +Date: Mon Oct 8 13:37:30 2001 +0000 ------------------------------------------------------------------------- -r651 | guus | 2001-06-21 18:37:05 +0200 (do, 21 jun 2001) | 2 lines + - Use ping timeout mechanism to close connections that don't authenticate + in time. + - Fix potential segmentation fault in check_dead_connections(). -Check for and add -ldl. +commit ce9fd32c04adf83cbaf668ee42a29575ba256002 +Author: Guus Sliepen +Date: Mon Oct 8 11:59:08 2001 +0000 ------------------------------------------------------------------------- -r650 | guus | 2001-06-21 18:16:32 +0200 (do, 21 jun 2001) | 6 lines + Fix bug where tinc would crash because of a portscan or a connection from a + tinc daemon with a different version. -- Solaris compile fixes -- Set mymac to broadcast MAC so that ifconfig hw ether <...> is really not - needed anymore. -- Forwarding of indirect packets when in switch mode (because the kernel - will not do it for us then). +commit 21027b1d5702c331b1ebb262bb149c75be1f24b1 +Author: Guus Sliepen +Date: Mon Oct 8 11:47:55 2001 +0000 ------------------------------------------------------------------------- -r649 | zarq | 2001-06-20 23:32:40 +0200 (wo, 20 jun 2001) | 2 lines + - Renamed lastbutonehop to prevhop. + - Added connection_t *via to connection_t, this keeps record of where + to send UDP packets to. -Don't include the debian/ dir in a release +commit 18d1233c40a5705e9123edd6f4c6764a5178003b +Author: Guus Sliepen +Date: Tue Sep 25 13:39:11 2001 +0000 ------------------------------------------------------------------------- -r648 | guus | 2001-06-09 12:00:34 +0200 (za, 09 jun 2001) | 2 lines + Fill in next- and lastbutonehop for myself. -Woops - big bug in send_key_changed fixed. +commit ec100a58b44e412a3d2606e5213af9ec5f30235b +Author: Guus Sliepen +Date: Tue Sep 25 13:35:45 2001 +0000 ------------------------------------------------------------------------- -r647 | guus | 2001-06-08 20:02:10 +0200 (vr, 08 jun 2001) | 2 lines + Try next connectto instead of the same over and over. -Only reset seconds_till_retry when we activate the outgoing connection. +commit 4d3de3b6a9b55bc783c649ff33e5415b0c7b5f25 +Author: Guus Sliepen +Date: Mon Sep 24 14:16:29 2001 +0000 ------------------------------------------------------------------------- -r646 | guus | 2001-06-07 09:51:04 +0200 (do, 07 jun 2001) | 6 lines + Show next- and lastbutonehop when dumping connectionlist to syslog. -Changed drastically because it didn't work correctly: -- Don't cache the --with-openssl-* option arguments -- Only search for openssl/*.h, the openssl include files include other - files only from an openssl/ directory too -- Set CPPFLAGS before AC_CHECK_HEADERS +commit 24a2c7e51a0b080c4bdb55f697b3f0458ebc3fb1 +Author: Guus Sliepen +Date: Mon Sep 24 14:12:00 2001 +0000 ------------------------------------------------------------------------- -r645 | guus | 2001-06-07 09:48:11 +0200 (do, 07 jun 2001) | 2 lines + Not only keep track of nexthop, but also of lastbutonehop. If destination cl + wants indirectdata, send it to the lastbutonehop instead, unless it too has + requested so, and so on. -Save configure cache more often. +commit 154733927af0b27cdadb83f03b845301ce8bfbfd +Author: Guus Sliepen +Date: Mon Sep 24 13:31:15 2001 +0000 ------------------------------------------------------------------------- -r644 | guus | 2001-06-06 21:12:38 +0200 (wo, 06 jun 2001) | 2 lines + - Try old TUN/TAP ioctl() request if the one from if_tun.h fails. + - Be more verbose about the kind of tap device used. -Fixes to make switching work between hosts that have no meta-connection. +commit 950c934e0bda28e5952d699d6008ee783d81982b +Author: Ivo Timmermans +Date: Wed Sep 5 18:38:09 2001 +0000 ------------------------------------------------------------------------- -r643 | guus | 2001-06-06 21:11:16 +0200 (wo, 06 jun 2001) | 2 lines + Killing tincd with SIGINT causes it to toggle between the current + debug level and level 5. Useful to debug a running tincd. -Log and warn about duplicate subnet_add()'s for the same subnet. +commit a54ec980e047d13ecff7f1f337aa2665072febfd +Author: Guus Sliepen +Date: Sat Sep 1 12:46:49 2001 +0000 ------------------------------------------------------------------------- -r642 | guus | 2001-06-05 21:45:47 +0200 (di, 05 jun 2001) | 2 lines + config_t* is a const parameter in get_config_val(). -Add missing? counting of total_socket_in. +commit 68e23b1c9e69b2a218b3be821ad1ba3b3b6a64f2 +Author: Guus Sliepen +Date: Sat Sep 1 12:36:53 2001 +0000 ------------------------------------------------------------------------- -r641 | guus | 2001-06-05 21:39:54 +0200 (di, 05 jun 2001) | 6 lines + Optional signal number for -k option. -You can now put an option "Mode" in tinc.conf, and choose from: +commit 8ed27d40f358581d021319cc26313c9f6ddf9a71 +Author: Guus Sliepen +Date: Sat Sep 1 12:36:06 2001 +0000 -- Mode = router (default, work like tinc has always worked) -- Mode = switch (work like a switch) -- Mode = hub (work like a hub, broadcasting everything) + Revised reconnection mechanism, always try out all ConnectTo lines. ------------------------------------------------------------------------- -r640 | guus | 2001-06-05 20:07:14 +0200 (di, 05 jun 2001) | 2 lines +commit ef1facc60709e9474197aa3fde9d517dfd96dc87 +Author: Guus Sliepen +Date: Sat Sep 1 12:02:39 2001 +0000 -Fix bug where lookup_subnet_ipv4() could go into an infinite loop. + Remove IndirectData support for now, new implementation will be added + later. ------------------------------------------------------------------------- -r639 | guus | 2001-06-05 18:31:59 +0200 (di, 05 jun 2001) | 2 lines +commit 8b5e4211304aaa5d39bc95f04398bd5ecaa887d8 +Author: Guus Sliepen +Date: Tue Aug 28 20:52:39 2001 +0000 -- This oneliner removes the need for ifconfig tap? hw ether fe:fd:0:0:0:0 + Fix signed comparison bug in lookup_subnet_ipv4(). ------------------------------------------------------------------------- -r638 | guus | 2001-06-05 18:15:48 +0200 (di, 05 jun 2001) | 2 lines +commit e1184ad15d6b2e7d58bdcb4489026dd0a35b4e5f +Author: Guus Sliepen +Date: Fri Aug 17 18:14:04 2001 +0000 -Updated dutch translation. + Don't send DEL_HOSTs when !status.meta ------------------------------------------------------------------------- -r637 | guus | 2001-06-05 18:13:41 +0200 (di, 05 jun 2001) | 3 lines +commit 30d22474ccc8da9a5685a90e0b2304ec627475af +Author: Guus Sliepen +Date: Tue Jul 24 20:14:30 2001 +0000 -Changed some stuff to allow correct generation of po/Makefile after a -make cvs-clean. + Explicitly log which type of tunnel device is used. ------------------------------------------------------------------------- -r636 | guus | 2001-06-05 18:09:55 +0200 (di, 05 jun 2001) | 3 lines +commit 7e86cf91e3399905e19882bcf2d5677d7986aca5 +Author: Guus Sliepen +Date: Tue Jul 24 20:13:42 2001 +0000 -- tinc can now act as a switch or a hub too (as opposed to a router only) -- cleaner initialisation of "UNKNOWN" and "MYSELF" names + The val variable in a config_t is never used as a long. ------------------------------------------------------------------------- -r635 | guus | 2001-06-04 13:14:35 +0200 (ma, 04 jun 2001) | 3 lines +commit 43923d2b106bfbe9300cc8e364cf098444cd649e +Author: Guus Sliepen +Date: Tue Jul 24 20:04:22 2001 +0000 -Added proxy-arp support. No more ifconfig -arp needed. Works like a charm -under FreeBSD now :). + Write public key to rsa_key.pub instead of rsa_key.priv (if not host + configuration file is found). ------------------------------------------------------------------------- -r634 | guus | 2001-06-01 10:02:09 +0200 (vr, 01 jun 2001) | 2 lines +commit 44e9d6a2872fac55f7eb701ba576ed9f39a22e08 +Author: Guus Sliepen +Date: Tue Jul 24 20:03:40 2001 +0000 -Fix subnet_lookup() for overlapping subnets. Needs rethinking. + Don't use %m in fprintf(). ------------------------------------------------------------------------- -r633 | guus | 2001-05-28 10:56:57 +0200 (ma, 28 mei 2001) | 2 lines +commit cbd03caece25d45015a4526b94b04a34ab87b0f2 +Author: Guus Sliepen +Date: Tue Jul 24 08:51:36 2001 +0000 -Make sure Solaris is happy too. + More on edges. ------------------------------------------------------------------------- -r632 | guus | 2001-05-28 10:21:43 +0200 (ma, 28 mei 2001) | 2 lines +commit 3cd238f4e338f257ff61d58a9979b54344ee462f +Author: Guus Sliepen +Date: Mon Jul 23 22:06:22 2001 +0000 -Small fixes to allow correct compilation under FreeBSD (tested with 4.3) + Discuss how sending ADD_EDGEs would be better than sending ADD_HOSTs. ------------------------------------------------------------------------- -r631 | zarq | 2001-05-26 11:35:28 +0200 (za, 26 mei 2001) | 2 lines +commit 5333cada0dfc4dfc3be728e6c78d8d42dc2ace52 +Author: Guus Sliepen +Date: Sun Jul 22 17:41:52 2001 +0000 -Don't distribute autogen.sh in a release + Written down a possible solution. ------------------------------------------------------------------------- -r630 | zarq | 2001-05-26 11:35:00 +0200 (za, 26 mei 2001) | 2 lines +commit 995ab86fce506e9fabcf5a9ead7d43b30f12ab09 +Author: Guus Sliepen +Date: Sun Jul 22 15:25:13 2001 +0000 -Changed version number to 1.0-cvs + Correctie. ------------------------------------------------------------------------- -r629 | zarq | 2001-05-26 11:34:11 +0200 (za, 26 mei 2001) | 2 lines +commit d7b4de0e73baf664964f6daaf63526606b6a890b +Author: Guus Sliepen +Date: Sun Jul 22 14:58:18 2001 +0000 -New make target: `make release' + Small update. ------------------------------------------------------------------------- -r628 | guus | 2001-05-25 20:57:37 +0200 (vr, 25 mei 2001) | 2 lines +commit 71b9041f484128219f81cbf4f22a4e11388f879d +Author: Guus Sliepen +Date: Sun Jul 22 14:46:11 2001 +0000 -Fix sample configuration to show keys in PEM format and correct tapdevice. + Described problem in more detail. ------------------------------------------------------------------------- -r627 | guus | 2001-05-25 15:24:34 +0200 (vr, 25 mei 2001) | 3 lines +commit c1a98cd37ea20f6020487b2a5586e6de432398e7 +Author: Guus Sliepen +Date: Sun Jul 22 14:04:38 2001 +0000 -Documents are merged. Now we only need to check the ports and the TCPonly -and IndirectData options. + Started writing a document about how daemons connect to each other. ------------------------------------------------------------------------- -r626 | guus | 2001-05-25 14:45:37 +0200 (vr, 25 mei 2001) | 2 lines +commit fcbe215d64d7e2f3b159fff6422d750417877ac4 +Author: Guus Sliepen +Date: Sat Jul 21 20:21:25 2001 +0000 -Merged PROTOCOL, NETWORK and SECURITY2 with the texinfo manual. + Woohoo! tinc now compiles, runs and actually *works* on Solaris! + Tested on a SparcStation 20MP running Solaris 7. (Thanks, jiggel!) ------------------------------------------------------------------------- -r625 | guus | 2001-05-25 13:54:28 +0200 (vr, 25 mei 2001) | 2 lines +commit 533ee1206fb6433a1f0e616db999b3655addfaf2 +Author: Guus Sliepen +Date: Sat Jul 21 15:46:34 2001 +0000 -TCPonly now works (in a relatively clean way too). + Always close all sockets in terminate_connection(). ------------------------------------------------------------------------- -r624 | guus | 2001-05-25 12:08:11 +0200 (vr, 25 mei 2001) | 2 lines +commit acb853205d6d582d919c59879393b301ad4f4fde +Author: Guus Sliepen +Date: Sat Jul 21 15:34:18 2001 +0000 -With recent kernels the tun device file is located in /dev/net. + Updated terminate_connection() so you can choose if DEL_HOSTs should be + sent or not. ------------------------------------------------------------------------- -r623 | guus | 2001-05-25 12:06:13 +0200 (vr, 25 mei 2001) | 2 lines +commit 12f6b80429bc05a828051d72cc46f173e4657180 +Author: Guus Sliepen +Date: Fri Jul 20 20:25:10 2001 +0000 -Small corrections to the manuals. + Added purge_tree for connection_t's which are no longer in the connection, + active or id trees, but which may still be referenced. This tree is flushed + when it is safe, this replaces purge_connection_tree(). + + Also lots of bugfixes related to the new trees. ------------------------------------------------------------------------- -r622 | guus | 2001-05-25 10:36:11 +0200 (vr, 25 mei 2001) | 6 lines +commit 37ed4265fa73d4c06c74362514d78c92029b2f05 +Author: Guus Sliepen +Date: Fri Jul 20 13:54:19 2001 +0000 -Small fixes: + Remove all unnecessary status.meta and status.active checks. -- Fix compiler warnings (one was a real (but harmless) bug) -- Don't send PING packets if there is UDP traffic -- Correctly terminate strings containing salt for PING/PONG packets +commit 5e2ded68bfc7b3a1bfa600c1ce46144eb50e57a2 +Author: Guus Sliepen +Date: Thu Jul 19 12:29:40 2001 +0000 ------------------------------------------------------------------------- -r621 | guus | 2001-05-24 23:52:26 +0200 (do, 24 mei 2001) | 2 lines + Correctly use the active_tree. -Only send key_changed if it was previously requested. +commit 319e0cb48eb00565a11c85b901f54141f8160334 +Author: Guus Sliepen +Date: Sun Jul 15 18:07:31 2001 +0000 ------------------------------------------------------------------------- -r620 | guus | 2001-05-24 23:32:30 +0200 (do, 24 mei 2001) | 3 lines + Split connection list into two lists: + - one list to handle all incoming/outgoing TCP connections + - another list to handle all UDP connections + + This will prevent race conditions. -All features for 1.0 are implemented now, we just have to check the -FreeBSD and Solaris ports and merge some docs. +commit b3074590b184c141419cf4926820dc0d78380535 +Author: Guus Sliepen +Date: Sun Jul 15 14:21:12 2001 +0000 ------------------------------------------------------------------------- -r619 | guus | 2001-05-24 23:30:36 +0200 (do, 24 mei 2001) | 3 lines + Correct inclusion of standard if_tun.h header file. -Since this is incompatible with some earlier versions, PROT_CURRENT is -increased. +commit 5dc4ade0b9c127a3c144d9c59894bf13527fe060 +Author: Guus Sliepen +Date: Wed Jul 4 08:43:32 2001 +0000 ------------------------------------------------------------------------- -r618 | guus | 2001-05-24 23:29:09 +0200 (do, 24 mei 2001) | 3 lines + Don't load table of verbose OpenSSL errormessages. -Add randomness to PING/PONG packets to prevent crypto attacks on quiet -tunnels. +commit 1e2bdc2b6d28c76c63fc9fd36169b90fa0994388 +Author: Guus Sliepen +Date: Wed Jul 4 08:41:36 2001 +0000 ------------------------------------------------------------------------- -r617 | guus | 2001-05-24 22:40:13 +0200 (do, 24 mei 2001) | 2 lines + - Always use instead of just + - Check if RAND_pseudo_bytes() exists, otherwise just use RAND_bytes() -Changed URL from kernelnotes.org to linuxdoc.org. +commit 6bd93e4c064578b545cb6dcaa28fffb229c929ff +Author: Guus Sliepen +Date: Sun Jul 1 21:42:13 2001 +0000 ------------------------------------------------------------------------- -r616 | guus | 2001-05-24 22:24:12 +0200 (do, 24 mei 2001) | 6 lines + Check for all potential duplicate entries in the id tree. -More revisions to the documentation: +commit 9645cabc8e8364ed4df187fab8065b0991afa6af +Author: Guus Sliepen +Date: Sun Jul 1 09:21:14 2001 +0000 -- Removed cruft -- Reordered some sections to make it more logical for the beginner -- Added small examples and hints about configuration files + Fix compiler warning. ------------------------------------------------------------------------- -r615 | guus | 2001-05-19 17:50:51 +0200 (za, 19 mei 2001) | 5 lines +commit 6365d0627b9b1e9a31371ec891db0d2cfb4d6ed4 +Author: Guus Sliepen +Date: Sun Jul 1 09:21:01 2001 +0000 -- Make sure correct information is supplied for both old kernels (with - ethertap) and for new kernels (with TUN/TAP driver). -- Revised example configuration and made it conform to latest (CVS) version of - tinc. + Fix printf format bug. ------------------------------------------------------------------------- -r614 | guus | 2001-05-07 21:08:46 +0200 (ma, 07 mei 2001) | 4 lines +commit 33d6de0cd5c05cbf37211924a45e4231fec3a416 +Author: Guus Sliepen +Date: Sun Jul 1 09:06:17 2001 +0000 -- s/ip_t/ipv4_t/g -- Add "salt" to the beginning of UDP packets. Replaces length field which - is not useful anyway. + More items marked as done. ------------------------------------------------------------------------- -r613 | guus | 2001-05-04 20:45:02 +0200 (vr, 04 mei 2001) | 2 lines +commit a111593a082ff1df26f54168ab00f83ab3a1ab49 +Author: Guus Sliepen +Date: Fri Jun 29 15:38:40 2001 +0000 -Correctly cycle through ConnectTo variables. + Dutch translation updated. ------------------------------------------------------------------------- -r612 | guus | 2001-04-13 12:30:04 +0200 (vr, 13 apr 2001) | 2 lines +commit 748dabdbe93f7439ed7eddf491a556279250e7ac +Author: Guus Sliepen +Date: Fri Jun 29 15:33:18 2001 +0000 -Depend on new ssl package and install alias for universal TUN/TAP module. + Update of RedHat build scripts. ------------------------------------------------------------------------- -r611 | guus | 2001-03-13 22:33:31 +0100 (di, 13 mrt 2001) | 2 lines +commit 343c8fb6388ffd4f5c41cebd666aa8a045b20bdd +Author: Guus Sliepen +Date: Fri Jun 29 15:32:26 2001 +0000 -Check indirectdata option before forwarding certain requests. + It appears that autogen.sh doesn't like es.po if it isn't mentioned in + the makefile/configure scripts. ------------------------------------------------------------------------- -r610 | guus | 2001-03-13 22:32:24 +0100 (di, 13 mrt 2001) | 2 lines +commit 9391efe4e88077723840a7c085388ba2765ca17c +Author: Guus Sliepen +Date: Fri Jun 29 14:15:46 2001 +0000 -Ignore alarm signals if we do not need to respond to them. + Check for dlopen in standard libraries first (needed for DEC OSF). ------------------------------------------------------------------------- -r609 | guus | 2001-03-13 10:55:14 +0100 (di, 13 mrt 2001) | 3 lines +commit c9591bd1de1abcfe10459bd8c8cdd81a7b441ec0 +Author: Guus Sliepen +Date: Fri Jun 29 13:09:55 2001 +0000 -Fixed bug in setup_signals() that would make tinc die when unexpected -signals were caught. + Fix gcc 3.0 warnings. ------------------------------------------------------------------------- -r608 | guus | 2001-03-13 00:58:19 +0100 (di, 13 mrt 2001) | 3 lines +commit 402b85c48284a06fbfc56aca102b33be3a4260b0 +Author: Guus Sliepen +Date: Fri Jun 29 13:09:32 2001 +0000 -Fixed a race condition triggered by receive_meta() and the new -authentication scheme. + Log error if two hosts connect with same IP/port tuple. ------------------------------------------------------------------------- -r607 | guus | 2001-03-04 15:00:24 +0100 (zo, 04 mrt 2001) | 3 lines +commit 0d3bd912acdb00dc0a8015e337f981c942aa21bc +Author: Guus Sliepen +Date: Fri Jun 29 11:09:13 2001 +0000 -Added a description of what is going on in net.c and route.c, and how -packets flow through tinc. + Also remove po/Makefile.in.in, which is generated by autogen.sh. ------------------------------------------------------------------------- -r606 | guus | 2001-03-04 14:59:53 +0100 (zo, 04 mrt 2001) | 2 lines +commit 67c16924c10b25d37957843a69d993b934dd1776 +Author: Guus Sliepen +Date: Fri Jun 29 11:03:27 2001 +0000 -Updated translation. + es.po revived. ------------------------------------------------------------------------- -r605 | guus | 2001-03-04 14:59:32 +0100 (zo, 04 mrt 2001) | 5 lines +commit 5d3450357482176ce92ed4832ec944519d197744 +Author: Guus Sliepen +Date: Fri Jun 29 10:30:18 2001 +0000 -- route.c is now used to determine destination -- flags are removed, since they were not used at all. Use options instead. -- indirectdata works now, tcponly almost... -- made functions that don't return useful information void + Execute tinc-down BEFORE tap device is closed. This is a. more symmetric + (tinc-up is started after tap device is opened) and b. is needed for + tun/tap device, where the interface does not exist anymore after the + device file is closed. ------------------------------------------------------------------------- -r603 | guus | 2001-03-02 12:25:56 +0100 (vr, 02 mrt 2001) | 2 lines +commit 6666acd0012c82c0bb4d1abae87332cec3dda77a +Author: Guus Sliepen +Date: Fri Jun 29 10:27:57 2001 +0000 -Added explaination of our key exchange using RSA encryption. + Don't build Spanish translation. ------------------------------------------------------------------------- -r602 | guus | 2001-03-01 22:32:04 +0100 (do, 01 mrt 2001) | 2 lines +commit 77f635e871060f63c3e62fcf879d184326c690a4 +Author: Guus Sliepen +Date: Fri Jun 29 10:27:33 2001 +0000 -Various small fixes. + ABOUT-NLS is created by autogen.sh. ------------------------------------------------------------------------- -r601 | guus | 2001-02-27 17:50:29 +0100 (di, 27 feb 2001) | 2 lines +commit 333be8fbb8790237577761e580126a6d757a46e4 +Author: Guus Sliepen +Date: Fri Jun 29 10:23:46 2001 +0000 -Removed compiler warning. + Spanish translation removed. Nobody maintains it, and it is severely + outdated. ------------------------------------------------------------------------- -r600 | guus | 2001-02-27 17:37:31 +0100 (di, 27 feb 2001) | 2 lines +commit 3503ba995012f658f087a196dad0cb9fd45eff3b +Author: Ivo Timmermans +Date: Tue Jun 26 22:00:57 2001 +0000 -Removed lots of compiler warnings. + Small fix to make it compile again ------------------------------------------------------------------------- -r599 | guus | 2001-02-27 17:17:04 +0100 (di, 27 feb 2001) | 4 lines +commit 7fc068fe5421f7ec556b0b7db6f814e18b3326a4 +Author: Guus Sliepen +Date: Thu Jun 21 18:28:52 2001 +0000 -- Fixed Interface option (untested) -- Removed error handling for non-critical socket options -- Added TCP_NODELAY and IPTOS_LOWDELAY options for meta sockets. + Reinstated search for if_tun.h in kernel source tree, because apparently + /usr/include/linux does not always have the same contents as the include + files from the currently running kernel. ------------------------------------------------------------------------- -r598 | zarq | 2001-02-27 17:15:14 +0100 (di, 27 feb 2001) | 2 lines +commit 9e96840da810437c45af1c4b139578f7d74d65db +Author: Guus Sliepen +Date: Thu Jun 21 16:37:47 2001 +0000 -Authentication done + Remove #warnings I used for debugging stuff. ------------------------------------------------------------------------- -r597 | guus | 2001-02-27 16:33:39 +0100 (di, 27 feb 2001) | 3 lines +commit b1e97ece9c495ac67e54b8c2675b1eacc645eb1c +Author: Guus Sliepen +Date: Thu Jun 21 16:37:05 2001 +0000 -Don't forget to reconnect if outgoing connection fails during -authentication. + Check for and add -ldl. ------------------------------------------------------------------------- -r596 | guus | 2001-02-26 12:37:20 +0100 (ma, 26 feb 2001) | 3 lines +commit 04ec0b82ab9c6a2662300a9257a5aff1c4dd56e7 +Author: Guus Sliepen +Date: Thu Jun 21 16:16:32 2001 +0000 -- Make sure METAKEY is smaller than the modulus of the RSA key -- Get symmetric key from the least significant bytes of the RSA message + - Solaris compile fixes + - Set mymac to broadcast MAC so that ifconfig hw ether <...> is really not + needed anymore. + - Forwarding of indirect packets when in switch mode (because the kernel + will not do it for us then). ------------------------------------------------------------------------- -r595 | guus | 2001-02-25 21:17:46 +0100 (zo, 25 feb 2001) | 2 lines +commit 353a9230bb70b70028f2dc6c651a28e30b13dc63 +Author: Ivo Timmermans +Date: Wed Jun 20 21:32:40 2001 +0000 -Added process.c to the translated files. + Don't include the debian/ dir in a release ------------------------------------------------------------------------- -r594 | guus | 2001-02-25 20:09:45 +0100 (zo, 25 feb 2001) | 2 lines +commit 9a0a50cd3cf2570b39e00edf1a92123acbac41b4 +Author: Guus Sliepen +Date: Sat Jun 9 10:00:34 2001 +0000 -Implemented new authentication scheme from doc/SECURITY2. + Woops - big bug in send_key_changed fixed. ------------------------------------------------------------------------- -r593 | guus | 2001-02-25 17:34:19 +0100 (zo, 25 feb 2001) | 3 lines +commit ba918dce287788aaf6a90b3c7a9f349b197068d6 +Author: Guus Sliepen +Date: Fri Jun 8 18:02:10 2001 +0000 -Encrypt network packets in CBC mode instead of CFB mode. -(This breaks compatibility with all previous versions!) + Only reset seconds_till_retry when we activate the outgoing connection. ------------------------------------------------------------------------- -r592 | guus | 2001-02-25 17:04:00 +0100 (zo, 25 feb 2001) | 2 lines +commit c5c02a0861bf540e07fe64704cb97aae29c4cacf +Author: Guus Sliepen +Date: Thu Jun 7 07:51:04 2001 +0000 -Copy packets before putting them in the queue. + Changed drastically because it didn't work correctly: + - Don't cache the --with-openssl-* option arguments + - Only search for openssl/*.h, the openssl include files include other + files only from an openssl/ directory too + - Set CPPFLAGS before AC_CHECK_HEADERS ------------------------------------------------------------------------- -r591 | guus | 2001-02-25 16:34:50 +0100 (zo, 25 feb 2001) | 2 lines +commit 053e78654097cf353aa59b4d34e608726edd5dad +Author: Guus Sliepen +Date: Thu Jun 7 07:48:11 2001 +0000 -Free node->data and node, not node->data twice. + Save configure cache more often. ------------------------------------------------------------------------- -r590 | guus | 2001-02-25 15:51:42 +0100 (zo, 25 feb 2001) | 2 lines +commit 96ef7becdd71fc63c3489e3696117c1f137eade5 +Author: Guus Sliepen +Date: Wed Jun 6 19:12:38 2001 +0000 -Add missing \n. + Fixes to make switching work between hosts that have no meta-connection. ------------------------------------------------------------------------- -r589 | guus | 2001-02-25 12:09:29 +0100 (zo, 25 feb 2001) | 2 lines +commit ce6c8e6d089abac81520c517185c6ef81b09f051 +Author: Guus Sliepen +Date: Wed Jun 6 19:11:16 2001 +0000 -Corrected check for errors after read() calls. + Log and warn about duplicate subnet_add()'s for the same subnet. ------------------------------------------------------------------------- -r588 | wsl | 2001-02-20 22:53:18 +0100 (di, 20 feb 2001) | 2 lines +commit 9cd9b0392388e24ade19a43206221081b61806e7 +Author: Guus Sliepen +Date: Tue Jun 5 19:45:47 2001 +0000 -Important bugfix in avl_insert_before() and avl_insert_after() + Add missing? counting of total_socket_in. ------------------------------------------------------------------------- -r587 | zarq | 2001-02-18 03:13:26 +0100 (zo, 18 feb 2001) | 3 lines +commit 7bd7f5b4363f222340e5c058c243d31c576fba88 +Author: Guus Sliepen +Date: Tue Jun 5 19:39:54 2001 +0000 -tinc_TUNTAP now substitutes the values outside the AC_CACHE_CHECK -block. configure should now correctly set HAVE_TUNTAP. + You can now put an option "Mode" in tinc.conf, and choose from: + + - Mode = router (default, work like tinc has always worked) + - Mode = switch (work like a switch) + - Mode = hub (work like a hub, broadcasting everything) ------------------------------------------------------------------------- -r586 | guus | 2001-02-13 10:54:29 +0100 (di, 13 feb 2001) | 2 lines +commit edd6734faa37d043b8a2cc75b125db3b1c2130fa +Author: Guus Sliepen +Date: Tue Jun 5 18:07:14 2001 +0000 -Added description of the proposed new authentication scheme. + Fix bug where lookup_subnet_ipv4() could go into an infinite loop. ------------------------------------------------------------------------- -r584 | zarq | 2001-02-11 12:55:28 +0100 (zo, 11 feb 2001) | 2 lines +commit fa376fbd4e5151ae43e86441a1e99073eeaf46a5 +Author: Guus Sliepen +Date: Tue Jun 5 16:31:59 2001 +0000 -More files to ignore in CVS + - This oneliner removes the need for ifconfig tap? hw ether fe:fd:0:0:0:0 ------------------------------------------------------------------------- -r582 | guus | 2001-02-11 12:50:09 +0100 (zo, 11 feb 2001) | 4 lines +commit 7a736d47b264065371f35cd9da64485d798cbc80 +Author: Guus Sliepen +Date: Tue Jun 5 16:15:48 2001 +0000 -- Updated CVS_CREATED to remove intl/ directory and some other - autogenerated files. -- Checked if all INCLUDES/LIBS/etc directives inherit the global variables. + Updated dutch translation. ------------------------------------------------------------------------- -r581 | guus | 2001-02-11 12:46:14 +0100 (zo, 11 feb 2001) | 2 lines +commit 92924e8482f000eb33130ce9feadc08450ff349d +Author: Guus Sliepen +Date: Tue Jun 5 16:13:41 2001 +0000 -Ignore file for src/ + Changed some stuff to allow correct generation of po/Makefile after a + make cvs-clean. ------------------------------------------------------------------------- -r580 | guus | 2001-02-11 12:44:32 +0100 (zo, 11 feb 2001) | 3 lines +commit 4f9dad0972ac0f665a1b6050b059bd52f93e6221 +Author: Guus Sliepen +Date: Tue Jun 5 16:09:55 2001 +0000 -Added .cvsignore files to get rid of warnings and prevent autogenerated -files from being added accidentaly. + - tinc can now act as a switch or a hub too (as opposed to a router only) + - cleaner initialisation of "UNKNOWN" and "MYSELF" names ------------------------------------------------------------------------- -r578 | guus | 2001-02-06 11:42:27 +0100 (di, 06 feb 2001) | 2 lines +commit 428482d86f860d1fb09de722c1b6576ec2eef1ce +Author: Guus Sliepen +Date: Mon Jun 4 11:14:35 2001 +0000 -Removed another local definition of the variable "errno" + Added proxy-arp support. No more ifconfig -arp needed. Works like a charm + under FreeBSD now :). ------------------------------------------------------------------------- -r577 | guus | 2001-02-06 11:13:44 +0100 (di, 06 feb 2001) | 2 lines +commit 0a3c8cefd4a154948799baaaa246cf0eba050eff +Author: Guus Sliepen +Date: Fri Jun 1 08:02:09 2001 +0000 -Updated dutch translation. + Fix subnet_lookup() for overlapping subnets. Needs rethinking. ------------------------------------------------------------------------- -r576 | guus | 2001-02-06 11:13:22 +0100 (di, 06 feb 2001) | 2 lines +commit 7db1b999c82611d6c68a5d79b4754db19669d5c6 +Author: Guus Sliepen +Date: Mon May 28 08:56:57 2001 +0000 -Fix memory leak in avl_insert() if item was already inserted. + Make sure Solaris is happy too. ------------------------------------------------------------------------- -r575 | guus | 2001-02-06 11:12:51 +0100 (di, 06 feb 2001) | 2 lines +commit 65247c063b36a76dd68156fe17b017c7460d982f +Author: Guus Sliepen +Date: Mon May 28 08:21:43 2001 +0000 -FreeBSD compile fixes (thanks to XeF4) + Small fixes to allow correct compilation under FreeBSD (tested with 4.3) ------------------------------------------------------------------------- -r574 | zarq | 2001-01-18 14:02:34 +0100 (do, 18 jan 2001) | 2 lines +commit 4e959ee40542733e647c36831c1fc87ed8098233 +Author: Ivo Timmermans +Date: Sat May 26 09:35:28 2001 +0000 -Unpack sample-config.tar.gz when installing + Don't distribute autogen.sh in a release ------------------------------------------------------------------------- -r573 | zarq | 2001-01-18 14:01:42 +0100 (do, 18 jan 2001) | 2 lines +commit 514f8f579d5c0608aee8ca4a43d7414ecee5c11c +Author: Ivo Timmermans +Date: Sat May 26 09:35:00 2001 +0000 -Distribute the sample config as a .tar.gz + Changed version number to 1.0-cvs ------------------------------------------------------------------------- -r572 | zarq | 2001-01-18 14:00:57 +0100 (do, 18 jan 2001) | 2 lines +commit 20c2b62b1802390c0f5a1757641a0a1cea8103a8 +Author: Ivo Timmermans +Date: Sat May 26 09:34:11 2001 +0000 -Fixed some errors + New make target: `make release' ------------------------------------------------------------------------- -r570 | zarq | 2001-01-17 02:48:44 +0100 (wo, 17 jan 2001) | 2 lines +commit 8d307c2fbf2c20eb53909f74c81e03db838fb55e +Author: Guus Sliepen +Date: Fri May 25 18:57:37 2001 +0000 -Get the PO files up to date with the current source + Fix sample configuration to show keys in PEM format and correct tapdevice. ------------------------------------------------------------------------- -r569 | zarq | 2001-01-17 02:47:39 +0100 (wo, 17 jan 2001) | 2 lines +commit e12d41f39d8dd1cd30058d08effd2e5b66cdd4fd +Author: Guus Sliepen +Date: Fri May 25 13:24:34 2001 +0000 -Get the Debian changelog up to date + Documents are merged. Now we only need to check the ports and the TCPonly + and IndirectData options. ------------------------------------------------------------------------- -r568 | zarq | 2001-01-17 02:40:46 +0100 (wo, 17 jan 2001) | 2 lines +commit f0c64a3dac3b0469ea05fa5d44a1e7bdbfa64900 +Author: Guus Sliepen +Date: Fri May 25 12:45:37 2001 +0000 -Merged documentation with various updates I had lying around + Merged PROTOCOL, NETWORK and SECURITY2 with the texinfo manual. ------------------------------------------------------------------------- -r567 | zarq | 2001-01-17 02:34:08 +0100 (wo, 17 jan 2001) | 2 lines +commit fcf869cd4250a240ea8d443f70fa373e4fbacf07 +Author: Guus Sliepen +Date: Fri May 25 11:54:28 2001 +0000 -Second draft of the release notes + TCPonly now works (in a relatively clean way too). ------------------------------------------------------------------------- -r566 | zarq | 2001-01-17 02:31:56 +0100 (wo, 17 jan 2001) | 2 lines +commit a5e2ae6b2b2e1629cf05bb2a57df75f13c0f120a +Author: Guus Sliepen +Date: Fri May 25 10:08:11 2001 +0000 -Change version to 1.0pre4 + With recent kernels the tun device file is located in /dev/net. ------------------------------------------------------------------------- -r565 | zarq | 2001-01-17 02:30:32 +0100 (wo, 17 jan 2001) | 2 lines +commit 6e09c2a99c8ac3c1391f4f2eee16d6c235c10e90 +Author: Guus Sliepen +Date: Fri May 25 10:06:13 2001 +0000 -Set Architecture to `any' + Small corrections to the manuals. ------------------------------------------------------------------------- -r564 | zarq | 2001-01-17 02:30:05 +0100 (wo, 17 jan 2001) | 2 lines +commit 4dee76522e177dcb4af5d6d844a5f3b74070e4b7 +Author: Guus Sliepen +Date: Fri May 25 08:36:11 2001 +0000 -Fix error reporting of read_config + Small fixes: + + - Fix compiler warnings (one was a real (but harmless) bug) + - Don't send PING packets if there is UDP traffic + - Correctly terminate strings containing salt for PING/PONG packets ------------------------------------------------------------------------- -r563 | guus | 2001-01-13 17:36:23 +0100 (za, 13 jan 2001) | 6 lines +commit bfc5d6014e3c1563f7b6a2f10698e9ba23ba3e96 +Author: Guus Sliepen +Date: Thu May 24 21:52:26 2001 +0000 -- Allow ASN1 style keys to be in the config files. - Note: tinc ignores private key in the main config file, tinc.conf, - because it should really be in a separate file. -- When generating new keys, check if name is known and by default append - the public key to the host configuration file (otherwise rsa_key.pub). + Only send key_changed if it was previously requested. ------------------------------------------------------------------------- -r562 | guus | 2001-01-13 15:56:46 +0100 (za, 13 jan 2001) | 2 lines +commit 1a248fd5bd5aa24fa0f6a2c395f05dd569f0898d +Author: Guus Sliepen +Date: Thu May 24 21:32:30 2001 +0000 -- Copy entire sample-config directory to /etc/tinc/example upon installing. + All features for 1.0 are implemented now, we just have to check the + FreeBSD and Solaris ports and merge some docs. ------------------------------------------------------------------------- -r561 | guus | 2001-01-13 15:38:18 +0100 (za, 13 jan 2001) | 2 lines +commit 58893f0875369aafff8481825af271683c975a2a +Author: Guus Sliepen +Date: Thu May 24 21:30:36 2001 +0000 -Added sample configuration directory. + Since this is incompatible with some earlier versions, PROT_CURRENT is + increased. ------------------------------------------------------------------------- -r552 | guus | 2001-01-11 12:19:08 +0100 (do, 11 jan 2001) | 2 lines +commit d1b597758eab68bb80d97855f25cb6dda55eeb0b +Author: Guus Sliepen +Date: Thu May 24 21:29:09 2001 +0000 -- Only send out DEL_HOSTs for hosts with a meta connection + Add randomness to PING/PONG packets to prevent crypto attacks on quiet + tunnels. ------------------------------------------------------------------------- -r551 | guus | 2001-01-08 22:32:30 +0100 (ma, 08 jan 2001) | 2 lines +commit 4493b0650bd487990ca9d2802496ad0ee7c06247 +Author: Guus Sliepen +Date: Thu May 24 20:40:13 2001 +0000 -- Cleaned up subnet_t + Changed URL from kernelnotes.org to linuxdoc.org. ------------------------------------------------------------------------- -r550 | guus | 2001-01-08 22:32:00 +0100 (ma, 08 jan 2001) | 2 lines +commit 3360c6270bcc19a8b3d81da185266fc33b5c5421 +Author: Guus Sliepen +Date: Thu May 24 20:24:12 2001 +0000 -- Sign was wrong in search_closest_smaller/greater + More revisions to the documentation: + + - Removed cruft + - Reordered some sections to make it more logical for the beginner + - Added small examples and hints about configuration files ------------------------------------------------------------------------- -r549 | guus | 2001-01-08 21:35:30 +0100 (ma, 08 jan 2001) | 2 lines +commit 6f7f8659a2048fd6d616f4286ccdd0e661084493 +Author: Guus Sliepen +Date: Sat May 19 15:50:51 2001 +0000 -- Squashed another nasty bug. + - Make sure correct information is supplied for both old kernels (with + ethertap) and for new kernels (with TUN/TAP driver). + - Revised example configuration and made it conform to latest (CVS) version of + tinc. ------------------------------------------------------------------------- -r548 | guus | 2001-01-07 21:19:35 +0100 (zo, 07 jan 2001) | 2 lines +commit e4f3d93ec62871d1ae11b460627aef0da1b23cd2 +Author: Guus Sliepen +Date: Mon May 7 19:08:46 2001 +0000 -- Added indirectdata and tcponly functionality. + - s/ip_t/ipv4_t/g + - Add "salt" to the beginning of UDP packets. Replaces length field which + is not useful anyway. ------------------------------------------------------------------------- -r547 | guus | 2001-01-07 21:19:08 +0100 (zo, 07 jan 2001) | 2 lines +commit a26081467c197cc6b26a0c36c4508361b242fc85 +Author: Guus Sliepen +Date: Fri May 4 18:45:02 2001 +0000 -- Fixed IPv6 subnet lookup routine. + Correctly cycle through ConnectTo variables. ------------------------------------------------------------------------- -r546 | guus | 2001-01-07 18:09:07 +0100 (zo, 07 jan 2001) | 2 lines +commit 80b4a851a6b62cbbf503c2225f93305966f058c0 +Author: Guus Sliepen +Date: Fri Apr 13 10:30:04 2001 +0000 -- It's 2001, all copyright notices are updated. + Depend on new ssl package and install alias for universal TUN/TAP module. ------------------------------------------------------------------------- -r545 | guus | 2001-01-07 18:08:03 +0100 (zo, 07 jan 2001) | 2 lines +commit 156ec676525ed789364b7a77926dd0717d0cf5d7 +Author: Guus Sliepen +Date: Tue Mar 13 21:33:31 2001 +0000 -- Description of protocol and authentication updated. + Check indirectdata option before forwarding certain requests. ------------------------------------------------------------------------- -r544 | guus | 2001-01-07 16:27:30 +0100 (zo, 07 jan 2001) | 3 lines +commit c426e981eeaed3fa4801221720ee8f74d40e9223 +Author: Guus Sliepen +Date: Tue Mar 13 21:32:24 2001 +0000 -- Added header file for route.c. The routing routines in it are not used - yet, but have a look at the source for the ideas behind it. + Ignore alarm signals if we do not need to respond to them. ------------------------------------------------------------------------- -r543 | guus | 2001-01-07 16:25:49 +0100 (zo, 07 jan 2001) | 2 lines +commit b413257e10ae0645da43583dd8f84a1f74df5bd7 +Author: Guus Sliepen +Date: Tue Mar 13 09:55:14 2001 +0000 -- Reinstated a queue for outgoing packets. + Fixed bug in setup_signals() that would make tinc die when unexpected + signals were caught. ------------------------------------------------------------------------- -r542 | guus | 2001-01-07 16:24:52 +0100 (zo, 07 jan 2001) | 3 lines +commit f1a082823c48d00171b814f7e14e07e6dd4632fb +Author: Guus Sliepen +Date: Mon Mar 12 23:58:19 2001 +0000 -- Changed list routines to give it the same look'n'feel as the rbl and - avl tree library. + Fixed a race condition triggered by receive_meta() and the new + authentication scheme. ------------------------------------------------------------------------- -r540 | guus | 2001-01-06 21:43:03 +0100 (za, 06 jan 2001) | 2 lines +commit f4887b981f109fc4264f50170b2d12c4033bf5e9 +Author: Guus Sliepen +Date: Sun Mar 4 14:00:24 2001 +0000 -- Typo. + Added a description of what is going on in net.c and route.c, and how + packets flow through tinc. ------------------------------------------------------------------------- -r539 | guus | 2001-01-06 21:02:21 +0100 (za, 06 jan 2001) | 2 lines +commit 9d5c9bf6ba74e4e8bbd12b97fdda6c665155fec6 +Author: Guus Sliepen +Date: Sun Mar 4 13:59:53 2001 +0000 -- Updated texinfo manual. + Updated translation. ------------------------------------------------------------------------- -r538 | guus | 2001-01-06 19:44:55 +0100 (za, 06 jan 2001) | 2 lines +commit 34f9e6cf2d6d2b81eb63f9f28963b447a2157740 +Author: Guus Sliepen +Date: Sun Mar 4 13:59:32 2001 +0000 -- Updated manual pages. + - route.c is now used to determine destination + - flags are removed, since they were not used at all. Use options instead. + - indirectdata works now, tcponly almost... + - made functions that don't return useful information void ------------------------------------------------------------------------- -r537 | guus | 2001-01-06 19:21:17 +0100 (za, 06 jan 2001) | 2 lines +commit d2a54597e029f9d4f7bd29837be1be33909d78b1 +Author: Guus Sliepen +Date: Fri Mar 2 11:25:56 2001 +0000 -- Changed license of AVL tree library to GPL. + Added explaination of our key exchange using RSA encryption. ------------------------------------------------------------------------- -r536 | guus | 2001-01-06 19:03:41 +0100 (za, 06 jan 2001) | 4 lines +commit 125c4978812cffa5154ce5378a276f43f78417d8 +Author: Guus Sliepen +Date: Thu Mar 1 21:32:04 2001 +0000 -- Check and follow symlinks in is_safe_path -- By default write keys to tinc config directory -- Small fix in protocol.c + Various small fixes. ------------------------------------------------------------------------- -r535 | guus | 2001-01-06 17:51:14 +0100 (za, 06 jan 2001) | 2 lines +commit 099cc867c1a0831add7f1b4046f22ad6bfa5a1ef +Author: Guus Sliepen +Date: Tue Feb 27 16:50:29 2001 +0000 -- Updated dutch translation. + Removed compiler warning. ------------------------------------------------------------------------- -r534 | guus | 2001-01-06 00:53:53 +0100 (za, 06 jan 2001) | 4 lines +commit 4fa12eb85d72f039df5004abc201f01f5573c2e4 +Author: Guus Sliepen +Date: Tue Feb 27 16:37:31 2001 +0000 -- Let user choose whether keys are in the config files or separate -- Use AVL trees instead of RBL trees -- Fixed a lot of annoying subtle bugs! Thanks to gdb... + Removed lots of compiler warnings. ------------------------------------------------------------------------- -r533 | guus | 2001-01-06 00:51:41 +0100 (za, 06 jan 2001) | 2 lines +commit 173d606514d82fc5ae7895a178238d0abcaf6606 +Author: Guus Sliepen +Date: Tue Feb 27 16:17:04 2001 +0000 -- Doubled size of trace buffer for easier debugging. + - Fixed Interface option (untested) + - Removed error handling for non-critical socket options + - Added TCP_NODELAY and IPTOS_LOWDELAY options for meta sockets. ------------------------------------------------------------------------- -r532 | guus | 2001-01-06 00:50:56 +0100 (za, 06 jan 2001) | 2 lines +commit fb4ba9b265666d9949b03209a3ff52ff1263226b +Author: Ivo Timmermans +Date: Tue Feb 27 16:15:14 2001 +0000 -- AVL tree routines: faster than RBL, and also more stable. + Authentication done ------------------------------------------------------------------------- -r529 | guus | 2000-12-22 22:34:24 +0100 (vr, 22 dec 2000) | 4 lines +commit 24fa68585923d2b52718390f3f38d1aaacef12f0 +Author: Guus Sliepen +Date: Tue Feb 27 15:33:39 2001 +0000 -- Don't even think about using sscanf with %as anymore -- Allow keys to be inside the config files or in a seperate file -- Small fixes + Don't forget to reconnect if outgoing connection fails during + authentication. ------------------------------------------------------------------------- -r528 | zarq | 2000-12-22 18:15:26 +0100 (vr, 22 dec 2000) | 2 lines +commit 34b7a876c3583f7a34585cff6a694bc9e35cdc87 +Author: Guus Sliepen +Date: Mon Feb 26 11:37:20 2001 +0000 -Added lint target, requires lclint. + - Make sure METAKEY is smaller than the modulus of the RSA key + - Get symmetric key from the least significant bytes of the RSA message ------------------------------------------------------------------------- -r527 | zarq | 2000-12-22 18:10:25 +0100 (vr, 22 dec 2000) | 2 lines +commit 4b0ad4d97abd3643c44f45841d52f3000a34ba60 +Author: Guus Sliepen +Date: Sun Feb 25 20:17:46 2001 +0000 -Forget router.c + Added process.c to the translated files. ------------------------------------------------------------------------- -r526 | zarq | 2000-12-22 17:59:16 +0100 (vr, 22 dec 2000) | 2 lines +commit 82455be966027a087a2ac23e3464594c81d7b111 +Author: Guus Sliepen +Date: Sun Feb 25 19:09:45 2001 +0000 -Include autogen.sh (needed for the Debian package). + Implemented new authentication scheme from doc/SECURITY2. ------------------------------------------------------------------------- -r525 | zarq | 2000-12-22 17:54:56 +0100 (vr, 22 dec 2000) | 2 lines +commit 54881faf6fdbf04fb5ee56b7809439fbc50c65cb +Author: Guus Sliepen +Date: Sun Feb 25 16:34:19 2001 +0000 -Various small changes. + Encrypt network packets in CBC mode instead of CFB mode. + (This breaks compatibility with all previous versions!) ------------------------------------------------------------------------- -r524 | zarq | 2000-12-06 14:33:49 +0100 (wo, 06 dec 2000) | 2 lines +commit 9de5787574b21e94c80ddc60def2b3e514aff755 +Author: Guus Sliepen +Date: Sun Feb 25 16:04:00 2001 +0000 -Re-introduced MyVirtualIP and VpnMask, as dummy options. + Copy packets before putting them in the queue. ------------------------------------------------------------------------- -r523 | zarq | 2000-12-05 10:04:32 +0100 (di, 05 dec 2000) | 2 lines +commit 38adc479a44b64afcb220cd757f77ab105cb9bcd +Author: Guus Sliepen +Date: Sun Feb 25 15:34:50 2001 +0000 -Give a warning about having to re-create the keys + Free node->data and node, not node->data twice. ------------------------------------------------------------------------- -r522 | zarq | 2000-12-05 10:03:41 +0100 (di, 05 dec 2000) | 2 lines +commit e250d64300cea2a83059866e7cbabcb33684160e +Author: Guus Sliepen +Date: Sun Feb 25 14:51:42 2001 +0000 -Ported it back to /bin/sh. + Add missing \n. ------------------------------------------------------------------------- -r521 | zarq | 2000-12-05 10:03:19 +0100 (di, 05 dec 2000) | 3 lines +commit 153fc35e57c0104aa4ea9103bcdbca3665e4934c +Author: Guus Sliepen +Date: Sun Feb 25 11:09:29 2001 +0000 -Install a file in /etc/modutils/tinc, containing all necessary aliases -and options for kernel modules. + Corrected check for errors after read() calls. ------------------------------------------------------------------------- -r520 | zarq | 2000-12-05 09:59:30 +0100 (di, 05 dec 2000) | 2 lines +commit 0b0c2a372ff5d11f73af172e07a93b2656374a42 +Author: Wessel Dankers +Date: Tue Feb 20 21:53:18 2001 +0000 -Tiny bits of code beautifying + Important bugfix in avl_insert_before() and avl_insert_after() ------------------------------------------------------------------------- -r518 | zarq | 2000-12-05 09:56:44 +0100 (di, 05 dec 2000) | 2 lines +commit 11f8465dd9a4f81b43a31f1cb6a7fc2d76bb7838 +Author: Ivo Timmermans +Date: Sun Feb 18 02:13:26 2001 +0000 -Oops. I did some VERY wrong things with readline(). Fixed now. + tinc_TUNTAP now substitutes the values outside the AC_CACHE_CHECK + block. configure should now correctly set HAVE_TUNTAP. ------------------------------------------------------------------------- -r517 | zarq | 2000-12-05 09:54:22 +0100 (di, 05 dec 2000) | 3 lines +commit bb0870498037565209e24fbb2ffa07b815350a0b +Author: Guus Sliepen +Date: Tue Feb 13 09:54:29 2001 +0000 -Massive long awaited documentation update. It's not finished yet, -most notably the example configuration is still old. + Added description of the proposed new authentication scheme. ------------------------------------------------------------------------- -r516 | zarq | 2000-12-03 13:23:06 +0100 (zo, 03 dec 2000) | 2 lines +commit cebb6efeb0f39bf05ca7836b7a393c8385b49335 +Author: Ivo Timmermans +Date: Sun Feb 11 11:55:28 2001 +0000 -Option -d accepts an argument to set the debug level immediately. + More files to ignore in CVS ------------------------------------------------------------------------- -r515 | zarq | 2000-12-03 13:22:19 +0100 (zo, 03 dec 2000) | 2 lines +commit 603781831f251d2e8111e8282d8e624b8e40b175 +Author: Guus Sliepen +Date: Sun Feb 11 11:50:09 2001 +0000 -Sort configuration directives + - Updated CVS_CREATED to remove intl/ directory and some other + autogenerated files. + - Checked if all INCLUDES/LIBS/etc directives inherit the global variables. ------------------------------------------------------------------------- -r514 | zarq | 2000-12-03 13:21:20 +0100 (zo, 03 dec 2000) | 2 lines +commit 88dfdc9dbac3f5d0aa70b77509b4a87513433987 +Author: Guus Sliepen +Date: Sun Feb 11 11:46:14 2001 +0000 -Added documentation merger + Ignore file for src/ ------------------------------------------------------------------------- -r513 | zarq | 2000-12-01 14:46:26 +0100 (vr, 01 dec 2000) | 2 lines +commit ef0fc4f687fc25e97551e589941d6a2a2d8ade42 +Author: Guus Sliepen +Date: Sun Feb 11 11:44:32 2001 +0000 -Include COPYING.README in the distribution. + Added .cvsignore files to get rid of warnings and prevent autogenerated + files from being added accidentaly. ------------------------------------------------------------------------- -r512 | zarq | 2000-12-01 14:45:46 +0100 (vr, 01 dec 2000) | 3 lines +commit f1cb3d8fa5f69840f353ca5a62f363dad47eb46f +Author: Guus Sliepen +Date: Tue Feb 6 10:42:27 2001 +0000 -Stated that distributing executables linked with OpenSSL is permitted -provided that all other requirements of the GPL are complied with. + Removed another local definition of the variable "errno" ------------------------------------------------------------------------- -r510 | zarq | 2000-12-01 13:38:42 +0100 (vr, 01 dec 2000) | 3 lines +commit 0f715887c617723e4b450083f8b77641f8b62e80 +Author: Guus Sliepen +Date: Tue Feb 6 10:13:44 2001 +0000 -Use buffer instead of line in read_config_file(), line may be assigned -NULL, so buffer always holds the pointer to the allocated space. + Updated dutch translation. ------------------------------------------------------------------------- -r509 | zarq | 2000-12-01 13:36:36 +0100 (vr, 01 dec 2000) | 3 lines +commit 4bc394a3e29f2f90434bbbfc9f23d5587398471b +Author: Guus Sliepen +Date: Tue Feb 6 10:13:22 2001 +0000 -readline() accepts two extra parameters, buf and buflen, to avoid -mallocing and freeing for every line that is read. + Fix memory leak in avl_insert() if item was already inserted. ------------------------------------------------------------------------- -r508 | zarq | 2000-12-01 00:44:07 +0100 (vr, 01 dec 2000) | 2 lines +commit f777c1807d663eaef3e36c395094451214886898 +Author: Guus Sliepen +Date: Tue Feb 6 10:12:51 2001 +0000 -Tagged `Storing private key in separate file' as done. + FreeBSD compile fixes (thanks to XeF4) ------------------------------------------------------------------------- -r507 | zarq | 2000-12-01 00:39:55 +0100 (vr, 01 dec 2000) | 2 lines +commit bb4457d6caf6e424aeaf9b09222d4e62cab939da +Author: Ivo Timmermans +Date: Thu Jan 18 13:02:34 2001 +0000 -All full stops have two spaces after them. (Silly commit, I know.) + Unpack sample-config.tar.gz when installing ------------------------------------------------------------------------- -r506 | zarq | 2000-12-01 00:18:21 +0100 (vr, 01 dec 2000) | 4 lines +commit fe61e1ffef186aa509a50be3be83955fe1cbb514 +Author: Ivo Timmermans +Date: Thu Jan 18 13:01:42 2001 +0000 -New function read_rsa_public_key(); -In net.c/setup_myself deleted old code to read the public key (which -is now implicitly read in together with the private key). + Distribute the sample config as a .tar.gz ------------------------------------------------------------------------- -r505 | zarq | 2000-11-30 23:48:48 +0100 (do, 30 nov 2000) | 2 lines +commit a73ec9caa45bda7738376a610030c8ba9b934445 +Author: Ivo Timmermans +Date: Thu Jan 18 13:00:57 2001 +0000 -Avoid printing duplicate messages from read_rsa_keys + Fixed some errors ------------------------------------------------------------------------- -r504 | zarq | 2000-11-30 23:33:16 +0100 (do, 30 nov 2000) | 2 lines +commit b33c5f6640e63cc4cd35285367bcb2827b732229 +Author: Ivo Timmermans +Date: Wed Jan 17 16:24:24 2001 +0000 -Better error checking when reading the RSA private key. + First try to create a graphical frontend for tinc configuration ------------------------------------------------------------------------- -r503 | zarq | 2000-11-30 23:32:14 +0100 (do, 30 nov 2000) | 4 lines +commit 6bc77a7710adcbc33331c45e1b6adf7089a42075 +Author: Ivo Timmermans +Date: Wed Jan 17 01:48:44 2001 +0000 -In readline(): initialise the line to zero length; -In read_config_file(): Test for EOF, and print the variable name that -caused an error. + Get the PO files up to date with the current source ------------------------------------------------------------------------- -r502 | zarq | 2000-11-30 22:11:03 +0100 (do, 30 nov 2000) | 2 lines +commit 664f7e5c0b9056d88e2b63b3626ea33c4894387b +Author: Ivo Timmermans +Date: Wed Jan 17 01:47:39 2001 +0000 -The file is safe if it doesn't exist. + Get the Debian changelog up to date ------------------------------------------------------------------------- -r501 | zarq | 2000-11-30 21:08:41 +0100 (do, 30 nov 2000) | 6 lines +commit 1d898e00a964ef922617683a1d29ff24e56ed8ff +Author: Ivo Timmermans +Date: Wed Jan 17 01:40:46 2001 +0000 -Read the PEM file pointed to by the configuration directive -PrivateKey. This means thatt he meaning of this variable has changed, -it no longer should contain the private key directly. + Merged documentation with various updates I had lying around -WARNING: This code is untested. +commit 457c6fa7b63a7f2971314d8d63af71c880ec6f53 +Author: Ivo Timmermans +Date: Wed Jan 17 01:34:08 2001 +0000 ------------------------------------------------------------------------- -r500 | zarq | 2000-11-30 01:24:13 +0100 (do, 30 nov 2000) | 4 lines + Second draft of the release notes -Implemented is_safe_path, and extended ask_and_safe_open. +commit b236ddb1df16f8eb025d485b75153c4f25f4afc6 +Author: Ivo Timmermans +Date: Wed Jan 17 01:31:56 2001 +0000 -is_safe_path needs more work before it is useable. + Change version to 1.0pre4 ------------------------------------------------------------------------- -r499 | zarq | 2000-11-29 16:22:04 +0100 (wo, 29 nov 2000) | 2 lines +commit a893b05cb017c04871c2faf4099f104985f4ad75 +Author: Ivo Timmermans +Date: Wed Jan 17 01:30:32 2001 +0000 -Updated Dutch translation + Set Architecture to `any' ------------------------------------------------------------------------- -r498 | zarq | 2000-11-29 15:30:07 +0100 (wo, 29 nov 2000) | 2 lines +commit 54e19d34663cfe4af05e9e1dac94f76e39858f18 +Author: Ivo Timmermans +Date: Wed Jan 17 01:30:05 2001 +0000 -Also free the pointer returned by readline(). + Fix error reporting of read_config ------------------------------------------------------------------------- -r497 | zarq | 2000-11-29 15:27:24 +0100 (wo, 29 nov 2000) | 2 lines +commit a56df1e06be3f47a775919e564c147687e961b5d +Author: Guus Sliepen +Date: Sat Jan 13 16:36:23 2001 +0000 -Use readline() in read_config_file() instead of fgets. + - Allow ASN1 style keys to be in the config files. + Note: tinc ignores private key in the main config file, tinc.conf, + because it should really be in a separate file. + - When generating new keys, check if name is known and by default append + the public key to the host configuration file (otherwise rsa_key.pub). ------------------------------------------------------------------------- -r496 | zarq | 2000-11-29 15:23:08 +0100 (wo, 29 nov 2000) | 2 lines +commit 44c85ab07ed07165b80140da4e2910ca51fa8887 +Author: Guus Sliepen +Date: Sat Jan 13 14:56:46 2001 +0000 -xstrdup now takes a const pointer as an argument. + - Copy entire sample-config directory to /etc/tinc/example upon installing. ------------------------------------------------------------------------- -r495 | zarq | 2000-11-29 15:24:40 +0100 (wo, 29 nov 2000) | 5 lines +commit b195e8815f0abb2c5527119221886b524d719019 +Author: Guus Sliepen +Date: Sat Jan 13 14:38:18 2001 +0000 -Implemented a readline() function that will read an entire line into a -dynamically allocated buffer; + Added sample configuration directory. -Ask for a file name in ask_and_safe_open(). +commit d646f4e094b63720f97bfd37bb3489bd9d6231a0 +Author: Guus Sliepen +Date: Thu Jan 11 11:19:08 2001 +0000 ------------------------------------------------------------------------- -r494 | zarq | 2000-11-29 02:37:50 +0100 (wo, 29 nov 2000) | 2 lines + - Only send out DEL_HOSTs for hosts with a meta connection -Added a check for a scanf that knows about %as. +commit c8beaf35ee923c209ee23bedcb3dc892d2c2dae3 +Author: Guus Sliepen +Date: Mon Jan 8 21:32:30 2001 +0000 ------------------------------------------------------------------------- -r492 | zarq | 2000-11-29 01:33:15 +0100 (wo, 29 nov 2000) | 3 lines + - Cleaned up subnet_t -Check for get_current_dir_name. There is a replacement function in -dropin.c. +commit e5e1c20a99b0d72792f28e9a075a9f4a7e8b2c95 +Author: Guus Sliepen +Date: Mon Jan 8 21:32:00 2001 +0000 ------------------------------------------------------------------------- -r491 | zarq | 2000-11-29 00:23:41 +0100 (wo, 29 nov 2000) | 3 lines + - Sign was wrong in search_closest_smaller/greater -dropin.c/h contain a set of drop-in replacements for non-standard C -library functions (read: GNU extensions). +commit 11f3e9d138daf6b726631cc124b14d66dfa4d1f7 +Author: Guus Sliepen +Date: Mon Jan 8 20:35:30 2001 +0000 ------------------------------------------------------------------------- -r488 | zarq | 2000-11-29 00:12:57 +0100 (wo, 29 nov 2000) | 3 lines + - Squashed another nasty bug. -Save RSA public and private keys to a separate file, instead of -wanting to copy them into a configuration file. +commit 447a43d63960802a7a29201c512246be11eb9c94 +Author: Guus Sliepen +Date: Sun Jan 7 20:19:35 2001 +0000 ------------------------------------------------------------------------- -r487 | zarq | 2000-11-28 09:59:27 +0100 (di, 28 nov 2000) | 4 lines + - Added indirectdata and tcponly functionality. -Use sigaction to set signal handlers, the previous commit (1.1.2.16) -already contained a large portion of what should have gone in this -one. +commit 7cd2baedc6027ef6a5b941342bc6d3931d7220ba +Author: Guus Sliepen +Date: Sun Jan 7 20:19:08 2001 +0000 ------------------------------------------------------------------------- -r486 | zarq | 2000-11-27 21:52:55 +0100 (ma, 27 nov 2000) | 2 lines + - Fixed IPv6 subnet lookup routine. -Sort items to either 1.0 or future release goals. +commit d3f889c8076dff9c00ebfe1459cb36425f8da41d +Author: Guus Sliepen +Date: Sun Jan 7 17:09:07 2001 +0000 ------------------------------------------------------------------------- -r485 | zarq | 2000-11-26 23:46:53 +0100 (zo, 26 nov 2000) | 3 lines + - It's 2001, all copyright notices are updated. -Check for the function strsignal, and define it to "" if it is not -available. +commit 96b6f958bc733c3963dd164caacd42513be47a86 +Author: Guus Sliepen +Date: Sun Jan 7 17:08:03 2001 +0000 ------------------------------------------------------------------------- -r484 | zarq | 2000-11-26 23:42:34 +0100 (zo, 26 nov 2000) | 2 lines + - Description of protocol and authentication updated. -Give an error message if daemon() failed. +commit 7109526c6789c73a18bbe6b228ca35f0374c8d36 +Author: Guus Sliepen +Date: Sun Jan 7 15:27:30 2001 +0000 ------------------------------------------------------------------------- -r483 | zarq | 2000-11-26 23:32:52 +0100 (zo, 26 nov 2000) | 2 lines + - Added header file for route.c. The routing routines in it are not used + yet, but have a look at the source for the ideas behind it. -Updated Spanish translation, provided by Enrique Zanardi. +commit 07a08f5539f441e66946d1db1711dc584f8621c4 +Author: Guus Sliepen +Date: Sun Jan 7 15:25:49 2001 +0000 ------------------------------------------------------------------------- -r482 | guus | 2000-11-25 14:33:33 +0100 (za, 25 nov 2000) | 4 lines + - Reinstated a queue for outgoing packets. -- Use only one socket for all UDP traffic (for compatibility) -- Write pidfile again after detaching -- Check OS (for handling FreeBSD/Solaris tun/tap stuff) +commit 049ff67817e0db5afbba30930531d8ea3f7f2d18 +Author: Guus Sliepen +Date: Sun Jan 7 15:24:52 2001 +0000 ------------------------------------------------------------------------- -r481 | guus | 2000-11-25 00:30:50 +0100 (za, 25 nov 2000) | 2 lines + - Changed list routines to give it the same look'n'feel as the rbl and + avl tree library. -- Added daemon() replacement. +commit 8b4bc5b3a7e31c198c001610c99c2993e1612376 +Author: Guus Sliepen +Date: Sat Jan 6 20:43:03 2001 +0000 ------------------------------------------------------------------------- -r478 | guus | 2000-11-25 00:14:52 +0100 (za, 25 nov 2000) | 2 lines + - Typo. -- Added Armijn to the list +commit 3d7289cf743f89cab4c71815482a4837a21f6703 +Author: Guus Sliepen +Date: Sat Jan 6 20:02:21 2001 +0000 ------------------------------------------------------------------------- -r477 | guus | 2000-11-25 00:13:07 +0100 (za, 25 nov 2000) | 11 lines + - Updated texinfo manual. -Another big & bad commit: -- Added some extra search functions to rbl routines -- Fix subnet_lookup() -- Reorder some syslog messages to make more sense -- daemon() is back -- Don't let scripts execute in parallel (gives race conditions, and - anyway something MIGHT just be configured which is necessary for further - execution of tinc itself) -- Accidently merged check_child() with execute_script(). -- Small fixes +commit 0d99ae59bd7c640d396ce978045f0911567fb9bf +Author: Guus Sliepen +Date: Sat Jan 6 18:44:55 2001 +0000 ------------------------------------------------------------------------- -r476 | zarq | 2000-11-24 17:52:57 +0100 (vr, 24 nov 2000) | 3 lines + - Updated manual pages. -Add default tinc-up and tinc-down scripts for a Debian system. These -do not yet work, it's just old code from init.d. +commit 90bf1b21fa7e94d73719da0593e7c0356d05e18f +Author: Guus Sliepen +Date: Sat Jan 6 18:21:17 2001 +0000 ------------------------------------------------------------------------- -r473 | zarq | 2000-11-24 15:15:20 +0100 (vr, 24 nov 2000) | 4 lines + - Changed license of AVL tree library to GPL. -Call autogen.sh instead of configure alone; and make cvs-clean instead -of distclean. This way you can just cvs checkout && dpkg-buildpackage -in one go. +commit f7bb205022e02c02c02733cd43544c231373115d +Author: Guus Sliepen +Date: Sat Jan 6 18:03:41 2001 +0000 ------------------------------------------------------------------------- -r472 | zarq | 2000-11-24 15:13:51 +0100 (vr, 24 nov 2000) | 2 lines + - Check and follow symlinks in is_safe_path + - By default write keys to tinc config directory + - Small fix in protocol.c -Explain how to tell configure where OpenSSL lives. +commit 1398edec37336853bfca6ea3dcca7c402f102ea2 +Author: Guus Sliepen +Date: Sat Jan 6 16:51:14 2001 +0000 ------------------------------------------------------------------------- -r471 | zarq | 2000-11-24 15:13:06 +0100 (vr, 24 nov 2000) | 2 lines + - Updated dutch translation. -Set errno to 0 before trying to kill the other process. +commit e924096f62655d711cd2d114a8d1ef0fecbb593b +Author: Guus Sliepen +Date: Fri Jan 5 23:53:53 2001 +0000 ------------------------------------------------------------------------- -r470 | zarq | 2000-11-24 15:12:31 +0100 (vr, 24 nov 2000) | 3 lines + - Let user choose whether keys are in the config files or separate + - Use AVL trees instead of RBL trees + - Fixed a lot of annoying subtle bugs! Thanks to gdb... -Alter CFLAGS, somehow INCLUDES doesn't propagate properly. Still -doesn't work exactly like it should, but getting there. +commit 052fbc0bdf36e0dbe2a0867ce770d426c9a44841 +Author: Guus Sliepen +Date: Fri Jan 5 23:51:41 2001 +0000 ------------------------------------------------------------------------- -r469 | zarq | 2000-11-24 15:04:49 +0100 (vr, 24 nov 2000) | 2 lines + - Doubled size of trace buffer for easier debugging. -Set CFLAGS to -O2 -Wall when running configure +commit 77509da76c61b881c9967bfb7cdafeaf6b56eb6d +Author: Guus Sliepen +Date: Fri Jan 5 23:50:56 2001 +0000 ------------------------------------------------------------------------- -r468 | zarq | 2000-11-24 15:00:32 +0100 (vr, 24 nov 2000) | 2 lines + - AVL tree routines: faster than RBL, and also more stable. -Use cvs2cl instead of rcs2log to generate the ChangeLog. +commit e1707f7739f450c729e26b921e459d5da07602f9 +Author: Guus Sliepen +Date: Fri Dec 22 21:34:24 2000 +0000 ------------------------------------------------------------------------- -r467 | zarq | 2000-11-24 15:03:13 +0100 (vr, 24 nov 2000) | 2 lines + - Don't even think about using sscanf with %as anymore + - Allow keys to be inside the config files or in a seperate file + - Small fixes -Set localstatedir to /var +commit ecae72de94222302aa326888f70cfacdbd775b23 +Author: Ivo Timmermans +Date: Fri Dec 22 17:15:26 2000 +0000 ------------------------------------------------------------------------- -r465 | zarq | 2000-11-24 14:33:48 +0100 (vr, 24 nov 2000) | 3 lines + Added lint target, requires lclint. -Do not attempt to retreive ChangeLog information only from the CABAL -tag, it doesn't work anyway. +commit c5fac35c6ce9b9fcc47508810d69aeab83d08c25 +Author: Ivo Timmermans +Date: Fri Dec 22 17:10:25 2000 +0000 ------------------------------------------------------------------------- -r464 | zarq | 2000-11-24 14:32:26 +0100 (vr, 24 nov 2000) | 2 lines + Forget router.c -Do not check for the daemon() system call +commit 37544990e96fe5ea161e644f6417f505d666cd00 +Author: Ivo Timmermans +Date: Fri Dec 22 16:59:16 2000 +0000 ------------------------------------------------------------------------- -r463 | zarq | 2000-11-24 13:44:39 +0100 (vr, 24 nov 2000) | 2 lines + Include autogen.sh (needed for the Debian package). -Do not use the C library's daemon() call. +commit 8a4daf4ea7758270a47a358f43ad97a64eb1c3ff +Author: Ivo Timmermans +Date: Fri Dec 22 16:54:56 2000 +0000 ------------------------------------------------------------------------- -r462 | guus | 2000-11-23 10:30:33 +0100 (do, 23 nov 2000) | 4 lines + Various small changes. -- Don't link with -ldl anymore -- Let's not use bash' built-in pwd function anymore... it does not follow - symlinks. +commit e469fca4d78e9d23698fe1e6b29b232198cc499e +Author: Ivo Timmermans +Date: Wed Dec 6 13:33:49 2000 +0000 ------------------------------------------------------------------------- -r461 | guus | 2000-11-23 00:09:38 +0100 (do, 23 nov 2000) | 2 lines + Re-introduced MyVirtualIP and VpnMask, as dummy options. -- #include instead of +commit e50e4a54d6b40b988041a7e9bfdfbf708657f3a5 +Author: Ivo Timmermans +Date: Tue Dec 5 09:04:32 2000 +0000 ------------------------------------------------------------------------- -r460 | guus | 2000-11-22 23:18:03 +0100 (wo, 22 nov 2000) | 2 lines + Give a warning about having to re-create the keys -- Fixed all (except 2) compiler warnings gcc -Wall gave. +commit 4610d98c04641fce65747e07d65cbdd03fb6fe30 +Author: Ivo Timmermans +Date: Tue Dec 5 09:03:41 2000 +0000 ------------------------------------------------------------------------- -r459 | guus | 2000-11-22 23:05:37 +0100 (wo, 22 nov 2000) | 2 lines + Ported it back to /bin/sh. -- More porting to FreeBSD and Solaris. +commit 1e38dcc3fa6c0da2fdb21f83a588338fa8a41818 +Author: Ivo Timmermans +Date: Tue Dec 5 09:03:19 2000 +0000 ------------------------------------------------------------------------- -r458 | guus | 2000-11-22 21:25:27 +0100 (wo, 22 nov 2000) | 2 lines + Install a file in /etc/modutils/tinc, containing all necessary aliases + and options for kernel modules. -- Work with the correct key buffer in ans_key_h +commit 6327f32f43dc9109fad9952fd50a23876d0acaf0 +Author: Ivo Timmermans +Date: Tue Dec 5 08:59:30 2000 +0000 ------------------------------------------------------------------------- -r457 | guus | 2000-11-22 20:55:53 +0100 (wo, 22 nov 2000) | 2 lines + Tiny bits of code beautifying -- No more %as. +commit 9267bed9f516244b00d5c86c8dae44b7eb78a96c +Author: Ivo Timmermans +Date: Tue Dec 5 08:56:44 2000 +0000 ------------------------------------------------------------------------- -r456 | guus | 2000-11-22 20:14:09 +0100 (wo, 22 nov 2000) | 3 lines + Oops. I did some VERY wrong things with readline(). Fixed now. -- Write pidfile AFTER detaching... -- Minor cleanups +commit 6ddc9109d7313503895227c7876309b36681393d +Author: Ivo Timmermans +Date: Tue Dec 5 08:54:22 2000 +0000 ------------------------------------------------------------------------- -r455 | guus | 2000-11-22 19:54:08 +0100 (wo, 22 nov 2000) | 4 lines + Massive long awaited documentation update. It's not finished yet, + most notably the example configuration is still old. -- Cleaned up and checked for some more NULL pointers in rbl.c -- Two connection lists: one for incoming connections, sorted on ip/port, - one for connections whose identity we know, sorted on id ofcourse... +commit bc22ee16e6903d2caf9d22afa85020d1e3e10b56 +Author: Ivo Timmermans +Date: Sun Dec 3 12:23:06 2000 +0000 ------------------------------------------------------------------------- -r454 | zarq | 2000-11-22 18:49:16 +0100 (wo, 22 nov 2000) | 2 lines + Option -d accepts an argument to set the debug level immediately. -Declare fd. +commit 01d23601a273d128ebfd13c2ffa10892e9b13094 +Author: Ivo Timmermans +Date: Sun Dec 3 12:22:19 2000 +0000 ------------------------------------------------------------------------- -r453 | zarq | 2000-11-22 18:48:15 +0100 (wo, 22 nov 2000) | 3 lines + Sort configuration directives -Add more checks to ensure that filedescriptors are right in -_execute_script(). +commit d6b77e18b58ad8f9bcd9b60864b95cd2a74482c5 +Author: Ivo Timmermans +Date: Sun Dec 3 12:21:20 2000 +0000 ------------------------------------------------------------------------- -r452 | zarq | 2000-11-22 17:19:07 +0100 (wo, 22 nov 2000) | 2 lines + Added documentation merger -Honor the --localstatedir option to configure, instead of hardcoded /var. +commit e985f6d3cdbebdeb17333bbd3d3c20d4618128cf +Author: Ivo Timmermans +Date: Fri Dec 1 13:46:26 2000 +0000 ------------------------------------------------------------------------- -r451 | guus | 2000-11-21 10:13:59 +0100 (di, 21 nov 2000) | 3 lines + Include COPYING.README in the distribution. -- Check for NULL tree->delete callback -- Add xstrdup() function +commit 94192b3db10fe51ce45fa569ec068423a4491b0b +Author: Ivo Timmermans +Date: Fri Dec 1 13:45:46 2000 +0000 ------------------------------------------------------------------------- -r450 | guus | 2000-11-21 00:29:47 +0100 (di, 21 nov 2000) | 2 lines + Stated that distributing executables linked with OpenSSL is permitted + provided that all other requirements of the GPL are complied with. -- More fixes. +commit 52575a573c1d87ee125a54a2e0b4044698904cae +Author: Ivo Timmermans +Date: Fri Dec 1 12:38:42 2000 +0000 ------------------------------------------------------------------------- -r449 | guus | 2000-11-20 23:13:14 +0100 (ma, 20 nov 2000) | 2 lines + Use buffer instead of line in read_config_file(), line may be assigned + NULL, so buffer always holds the pointer to the allocated space. -- Various small fixes. +commit ab33c1aa6081f07333bf1de00e4036dd2b4628a6 +Author: Ivo Timmermans +Date: Fri Dec 1 12:36:36 2000 +0000 ------------------------------------------------------------------------- -r448 | zarq | 2000-11-20 20:56:01 +0100 (ma, 20 nov 2000) | 3 lines + readline() accepts two extra parameters, buf and buflen, to avoid + mallocing and freeing for every line that is read. -Get rid of all libtool references at once. libtool was only used by -libblowfish, which was superseded by openssl. +commit 6c56a8416eded8f19076a619a27ad7b153dd91f3 +Author: Ivo Timmermans +Date: Thu Nov 30 23:44:07 2000 +0000 ------------------------------------------------------------------------- -r447 | guus | 2000-11-20 20:41:13 +0100 (ma, 20 nov 2000) | 2 lines + Tagged `Storing private key in separate file' as done. -- Proper initialization of rbltree structures. +commit 8fe83e98da043e930a88ddd6b2de6c14aa791335 +Author: Ivo Timmermans +Date: Thu Nov 30 23:39:55 2000 +0000 ------------------------------------------------------------------------- -r446 | guus | 2000-11-20 20:12:17 +0100 (ma, 20 nov 2000) | 2 lines + All full stops have two spaces after them. (Silly commit, I know.) -- Integrate rbl trees into tinc. +commit a0f7af3ed79c55d9680cbb0a569b3c8987581d43 +Author: Ivo Timmermans +Date: Thu Nov 30 23:18:21 2000 +0000 ------------------------------------------------------------------------- -r443 | zarq | 2000-11-20 19:06:17 +0100 (ma, 20 nov 2000) | 2 lines + New function read_rsa_public_key(); + In net.c/setup_myself deleted old code to read the public key (which + is now implicitly read in together with the private key). -Also include process.h +commit 28deaeac14d619efb9830d03fd61dc7cca70a701 +Author: Ivo Timmermans +Date: Thu Nov 30 22:48:48 2000 +0000 ------------------------------------------------------------------------- -r442 | zarq | 2000-11-20 19:05:34 +0100 (ma, 20 nov 2000) | 2 lines + Avoid printing duplicate messages from read_rsa_keys -More function and header checks +commit 2293304748f7e4e9a18ee848b8264bdecebae37f +Author: Ivo Timmermans +Date: Thu Nov 30 22:33:16 2000 +0000 ------------------------------------------------------------------------- -r441 | zarq | 2000-11-20 19:02:15 +0100 (ma, 20 nov 2000) | 2 lines + Better error checking when reading the RSA private key. -Added this release +commit bf4e969899bb6cdeb05570d96a567c2833ac83bd +Author: Ivo Timmermans +Date: Thu Nov 30 22:32:14 2000 +0000 ------------------------------------------------------------------------- -r440 | guus | 2000-11-19 23:12:46 +0100 (zo, 19 nov 2000) | 2 lines + In readline(): initialise the line to zero length; + In read_config_file(): Test for EOF, and print the variable name that + caused an error. -- Small fixes +commit 113198d9c0b3be9904057673cfed165406803f86 +Author: Ivo Timmermans +Date: Thu Nov 30 21:11:03 2000 +0000 ------------------------------------------------------------------------- -r439 | guus | 2000-11-19 12:05:59 +0100 (zo, 19 nov 2000) | 2 lines + The file is safe if it doesn't exist. -- Deletion also works now. +commit 09260b43d1ff037c22f86c82a6af830e9a6d6ae5 +Author: Ivo Timmermans +Date: Thu Nov 30 20:08:41 2000 +0000 ------------------------------------------------------------------------- -r438 | guus | 2000-11-19 03:04:29 +0100 (zo, 19 nov 2000) | 2 lines + Read the PEM file pointed to by the configuration directive + PrivateKey. This means thatt he meaning of this variable has changed, + it no longer should contain the private key directly. + + WARNING: This code is untested. -- Fixed a lot of small things. Tested everything except deletions. +commit 8ccb1ede92fbd55481fa2317c2450bb9dd94a180 +Author: Ivo Timmermans +Date: Thu Nov 30 00:24:13 2000 +0000 ------------------------------------------------------------------------- -r437 | guus | 2000-11-19 00:22:44 +0100 (zo, 19 nov 2000) | 2 lines + Implemented is_safe_path, and extended ask_and_safe_open. + + is_safe_path needs more work before it is useable. -- Fix tree head/tail upon insertion +commit 75e3c296b4fa1eb02df2f5f84a1280e791f88603 +Author: Ivo Timmermans +Date: Wed Nov 29 15:22:04 2000 +0000 ------------------------------------------------------------------------- -r436 | guus | 2000-11-19 00:21:01 +0100 (zo, 19 nov 2000) | 3 lines + Updated Dutch translation -- Implemented deletions -- Added rbl_foreach() function +commit d36da1948abdd27e9d0740c2baceb0bd155c18c6 +Author: Ivo Timmermans +Date: Wed Nov 29 14:30:07 2000 +0000 ------------------------------------------------------------------------- -r435 | guus | 2000-11-18 19:14:57 +0100 (za, 18 nov 2000) | 3 lines + Also free the pointer returned by readline(). -- Fixed searching -- Insertion implemented +commit 9e55426d72fd77fda891edd0023dab2f9909639e +Author: Ivo Timmermans +Date: Wed Nov 29 14:27:24 2000 +0000 ------------------------------------------------------------------------- -r434 | guus | 2000-11-17 11:03:02 +0100 (vr, 17 nov 2000) | 3 lines + Use readline() in read_config_file() instead of fgets. -- Removed stray @INCLUDE@ (how did that get there?) -- Use 0 instead of FALSE +commit 8ea23d9ec3f2fe0c113eac5caafb7c2bd03f3016 +Author: Ivo Timmermans +Date: Wed Nov 29 14:23:08 2000 +0000 ------------------------------------------------------------------------- -r433 | guus | 2000-11-17 01:56:49 +0100 (vr, 17 nov 2000) | 2 lines + xstrdup now takes a const pointer as an argument. -- Simplified do_detach +commit 54ef13bf75a7a1e787716ce395ffe847fa74673f +Author: Ivo Timmermans +Date: Wed Nov 29 14:24:40 2000 +0000 ------------------------------------------------------------------------- -r432 | zarq | 2000-11-16 23:13:09 +0100 (do, 16 nov 2000) | 2 lines + Implemented a readline() function that will read an entire line into a + dynamically allocated buffer; + + Ask for a file name in ask_and_safe_open(). -Use proper prototypes. +commit 9175d2048382c617a639fd3d437a9e06baa66d0f +Author: Ivo Timmermans +Date: Wed Nov 29 01:37:50 2000 +0000 ------------------------------------------------------------------------- -r431 | zarq | 2000-11-16 23:12:23 +0100 (do, 16 nov 2000) | 2 lines + Added a check for a scanf that knows about %as. -Move more functions from tincd.c into process.c. +commit 1ca04711aeab615161746c6bbb5d137388c73263 +Author: Ivo Timmermans +Date: Wed Nov 29 00:33:15 2000 +0000 ------------------------------------------------------------------------- -r430 | zarq | 2000-11-16 23:11:40 +0100 (do, 16 nov 2000) | 2 lines + Check for get_current_dir_name. There is a replacement function in + dropin.c. -Delete struct ifr +commit c94f7637427f4c89d56c41fe4c75f2970b664a63 +Author: Ivo Timmermans +Date: Tue Nov 28 23:23:41 2000 +0000 ------------------------------------------------------------------------- -r429 | zarq | 2000-11-16 19:06:39 +0100 (do, 16 nov 2000) | 3 lines + dropin.c/h contain a set of drop-in replacements for non-standard C + library functions (read: GNU extensions). -New function: xmalloc_and_zero, which initialises the allocated memory -to all zeroes. +commit 3ff76eb10acc55b6f269c1075de6bbaa5bc83516 +Author: Ivo Timmermans +Date: Tue Nov 28 23:12:57 2000 +0000 ------------------------------------------------------------------------- -r428 | zarq | 2000-11-16 18:54:29 +0100 (do, 16 nov 2000) | 2 lines + Save RSA public and private keys to a separate file, instead of + wanting to copy them into a configuration file. -Move all process-related functions into process.c. +commit 4c502b005bfd24821e817c134e8a442a5f4606de +Author: Ivo Timmermans +Date: Tue Nov 28 08:59:27 2000 +0000 ------------------------------------------------------------------------- -r425 | guus | 2000-11-16 10:18:38 +0100 (do, 16 nov 2000) | 2 lines + Use sigaction to set signal handlers, the previous commit (1.1.2.16) + already contained a large portion of what should have gone in this + one. -- Added balanced tree management stuff as well. (It is not finished yet.) +commit e44dc004b3d1ce8f857971f479c917931eda7091 +Author: Ivo Timmermans +Date: Mon Nov 27 20:52:55 2000 +0000 ------------------------------------------------------------------------- -r422 | zarq | 2000-11-15 23:07:36 +0100 (wo, 15 nov 2000) | 3 lines + Sort items to either 1.0 or future release goals. -Keep a list of running children, and in each loop in main_loop(), -check if one has exited. +commit 699f3b4c93482055c0832c9a6b76dc0294967003 +Author: Ivo Timmermans +Date: Sun Nov 26 22:46:53 2000 +0000 ------------------------------------------------------------------------- -r421 | zarq | 2000-11-15 23:04:48 +0100 (wo, 15 nov 2000) | 2 lines + Check for the function strsignal, and define it to "" if it is not + available. -List management and manipulation routines. +commit 67a4abda707b28b9c77cb35ff1e800e6a5b0991c +Author: Ivo Timmermans +Date: Sun Nov 26 22:42:34 2000 +0000 ------------------------------------------------------------------------- -r420 | guus | 2000-11-15 14:33:27 +0100 (wo, 15 nov 2000) | 3 lines + Give an error message if daemon() failed. -Porting to FreeBSD: -- Reorganized and added some #includes +commit 702e55306dfebe5c6f9a6587ed029c3bc3efbe8f +Author: Ivo Timmermans +Date: Sun Nov 26 22:32:52 2000 +0000 ------------------------------------------------------------------------- -r419 | zarq | 2000-11-15 02:28:21 +0100 (wo, 15 nov 2000) | 3 lines + Updated Spanish translation, provided by Enrique Zanardi. -Let the output from an executed script in execute_script() go to -syslog, with proper error detection. +commit 1eedf54681d4556c6874f7baee8e810cab867756 +Author: Guus Sliepen +Date: Sat Nov 25 13:33:33 2000 +0000 ------------------------------------------------------------------------- -r418 | zarq | 2000-11-15 02:06:13 +0100 (wo, 15 nov 2000) | 3 lines + - Use only one socket for all UDP traffic (for compatibility) + - Write pidfile again after detaching + - Check OS (for handling FreeBSD/Solaris tun/tap stuff) -Use the HAVE_OPENSSL_xxx_H defined from m4/openssl.m4 during -configure. +commit 0806605ce383b7e89fa26eda56f8a5f3bbed9dd3 +Author: Guus Sliepen +Date: Fri Nov 24 23:30:50 2000 +0000 ------------------------------------------------------------------------- -r417 | zarq | 2000-11-15 02:02:30 +0100 (wo, 15 nov 2000) | 2 lines + - Added daemon() replacement. -Also check for sha.h. +commit cfb828784ebbcf4b3e40eb9bb351b6ed10a84b35 +Author: Guus Sliepen +Date: Fri Nov 24 23:14:52 2000 +0000 ------------------------------------------------------------------------- -r416 | zarq | 2000-11-15 01:57:26 +0100 (wo, 15 nov 2000) | 3 lines + - Added Armijn to the list -Also check for rand.h and err.h. If any of these files does not -exist, try the next alternative path. +commit cf49b2c0647554613874cce495e4a7937a9f7863 +Author: Guus Sliepen +Date: Fri Nov 24 23:13:07 2000 +0000 ------------------------------------------------------------------------- -r415 | zarq | 2000-11-15 00:18:19 +0100 (wo, 15 nov 2000) | 2 lines + Another big & bad commit: + - Added some extra search functions to rbl routines + - Fix subnet_lookup() + - Reorder some syslog messages to make more sense + - daemon() is back + - Don't let scripts execute in parallel (gives race conditions, and + anyway something MIGHT just be configured which is necessary for further + execution of tinc itself) + - Accidently merged check_child() with execute_script(). + - Small fixes -Get rid of the annoying empty line +commit 97c54ffb35312caf38034952b9ed2733f7e374f9 +Author: Ivo Timmermans +Date: Fri Nov 24 16:52:57 2000 +0000 ------------------------------------------------------------------------- -r414 | zarq | 2000-11-15 00:02:08 +0100 (wo, 15 nov 2000) | 2 lines + Add default tinc-up and tinc-down scripts for a Debian system. These + do not yet work, it's just old code from init.d. -Oops, small error. +commit b42c9abafdc102db0641f3d444bdb30fbc29140a +Author: Ivo Timmermans +Date: Fri Nov 24 14:15:20 2000 +0000 ------------------------------------------------------------------------- -r413 | zarq | 2000-11-14 23:57:19 +0100 (di, 14 nov 2000) | 2 lines + Call autogen.sh instead of configure alone; and make cvs-clean instead + of distclean. This way you can just cvs checkout && dpkg-buildpackage + in one go. -Better checks for OpenSSL. I think it can now detect almost all conceivable installations. +commit edb9b4cad09855a9bb3c57c5d4b1b174fde1de6c +Author: Ivo Timmermans +Date: Fri Nov 24 14:13:51 2000 +0000 ------------------------------------------------------------------------- -r412 | zarq | 2000-11-13 23:29:22 +0100 (ma, 13 nov 2000) | 2 lines + Explain how to tell configure where OpenSSL lives. -Identify version as 1.0pre4-cvs +commit 4cb4a7d298d560593f84d974bf77d0ee8a911a50 +Author: Ivo Timmermans +Date: Fri Nov 24 14:13:06 2000 +0000 ------------------------------------------------------------------------- -r411 | zarq | 2000-11-13 23:01:27 +0100 (ma, 13 nov 2000) | 2 lines + Set errno to 0 before trying to kill the other process. -Add a check for openssl that accepts explicit file locations. +commit ef88db63120503a8c9d34d86073795c99dedc3a9 +Author: Ivo Timmermans +Date: Fri Nov 24 14:12:31 2000 +0000 ------------------------------------------------------------------------- -r409 | zarq | 2000-11-09 22:33:18 +0100 (do, 09 nov 2000) | 2 lines + Alter CFLAGS, somehow INCLUDES doesn't propagate properly. Still + doesn't work exactly like it should, but getting there. -Add prototype for destroy_queue +commit b17822840150f5ba8cfb8e5a44fc10d66bd15a97 +Author: Ivo Timmermans +Date: Fri Nov 24 14:04:49 2000 +0000 ------------------------------------------------------------------------- -r408 | zarq | 2000-11-09 22:29:58 +0100 (do, 09 nov 2000) | 2 lines + Set CFLAGS to -O2 -Wall when running configure -Updates, updates +commit eb36b0c1ef7b5ed8ff59c3b41cbb361ed37d5f01 +Author: Ivo Timmermans +Date: Fri Nov 24 14:00:32 2000 +0000 ------------------------------------------------------------------------- -r407 | zarq | 2000-11-09 21:59:35 +0100 (do, 09 nov 2000) | 2 lines + Use cvs2cl instead of rcs2log to generate the ChangeLog. -Bop version number to 1.0pre3-1 +commit 2f37f2bd8ab6b89eb6b6c2b4bdd6ffe449b1aa98 +Author: Ivo Timmermans +Date: Fri Nov 24 14:03:13 2000 +0000 ------------------------------------------------------------------------- -r406 | zarq | 2000-11-09 21:42:16 +0100 (do, 09 nov 2000) | 2 lines + Set localstatedir to /var -Wrapped text to 70 (72?) columns for easy reading +commit 31aa4298463498cbb755db747e901e4269cd1ef6 +Author: Ivo Timmermans +Date: Fri Nov 24 13:33:48 2000 +0000 ------------------------------------------------------------------------- -r405 | zarq | 2000-11-09 21:41:13 +0100 (do, 09 nov 2000) | 2 lines + Do not attempt to retreive ChangeLog information only from the CABAL + tag, it doesn't work anyway. -Final release notes added, also edited release notes for 1.0pre2 to what the announcement on the mailing list looked like. +commit f2dd7bb42c1f4bfa708f542e430f4a56fd43e74f +Author: Ivo Timmermans +Date: Fri Nov 24 13:32:26 2000 +0000 ------------------------------------------------------------------------- -r404 | guus | 2000-11-08 21:52:37 +0100 (wo, 08 nov 2000) | 2 lines + Do not check for the daemon() system call -- Make checkpoint tracing a compile time option (off by default) +commit b0ff879e7c68edd447328f3d806c1ad9e336fece +Author: Ivo Timmermans +Date: Fri Nov 24 12:44:39 2000 +0000 ------------------------------------------------------------------------- -r403 | guus | 2000-11-08 19:05:06 +0100 (wo, 08 nov 2000) | 2 lines + Do not use the C library's daemon() call. -- Add Jamie :) +commit cebcf78b9a24f70902009bea23514e55d84b096a +Author: Guus Sliepen +Date: Thu Nov 23 09:30:33 2000 +0000 ------------------------------------------------------------------------- -r402 | guus | 2000-11-08 18:56:34 +0100 (wo, 08 nov 2000) | 2 lines + - Don't link with -ldl anymore + - Let's not use bash' built-in pwd function anymore... it does not follow + symlinks. -- Applied Jamie Brigg's patch (close sockets after error) +commit 7aa7895629d72391eccfcb23f3cb6290a9e3abc3 +Author: Guus Sliepen +Date: Wed Nov 22 23:09:38 2000 +0000 ------------------------------------------------------------------------- -r401 | guus | 2000-11-08 01:20:06 +0100 (wo, 08 nov 2000) | 3 lines + - #include instead of -- Fixed --config -- Show warning when both netname and config directory are given. +commit dac256505e1af78505c9f905bd55c11d4b87345c +Author: Guus Sliepen +Date: Wed Nov 22 22:18:03 2000 +0000 ------------------------------------------------------------------------- -r400 | guus | 2000-11-08 01:10:50 +0100 (wo, 08 nov 2000) | 6 lines + - Fixed all (except 2) compiler warnings gcc -Wall gave. -Porting to SunOS 5.8: -- More #includes Linux doesn't seem to need -- Don't do unsetenv() on SunOS -- Use a replacement asprintf() in case the OS doesn't support it -It now compiles properly under SunOS. +commit 6f373e690236334d8f8333710b61f97ccad54bf1 +Author: Guus Sliepen +Date: Wed Nov 22 22:05:37 2000 +0000 ------------------------------------------------------------------------- -r399 | guus | 2000-11-07 23:33:33 +0100 (di, 07 nov 2000) | 4 lines + - More porting to FreeBSD and Solaris. -Porting to SunOS 5.8: -- Include all header files necessary -- Check for flock() function +commit 5971e352dae2cf189f1cbdeacffa4ccdd1e98304 +Author: Guus Sliepen +Date: Wed Nov 22 20:25:27 2000 +0000 ------------------------------------------------------------------------- -r398 | guus | 2000-11-07 23:02:14 +0100 (di, 07 nov 2000) | 2 lines + - Work with the correct key buffer in ans_key_h -- Open UDP connection for all known hosts. Comments please. +commit a07602c4fddfca9894f1d738959ae359695f5bf9 +Author: Guus Sliepen +Date: Wed Nov 22 19:55:53 2000 +0000 ------------------------------------------------------------------------- -r397 | guus | 2000-11-07 22:43:28 +0100 (di, 07 nov 2000) | 8 lines + - No more %as. -Changed execution of tinc-up: -- Do not free() strings that have been putenv()d, see man page of the - latter. -- Do not set IFNAME anymore, it appears that the ioctl to get the name of - the interface does not work at all. Since it is set to NETNAME in case - of tun/tap and it is known beforehand in case of ethertap, there is no - need for it anyway... (though it would've simplified things). +commit 394ed3fb174bb629bfb4b441fe58842562f955de +Author: Guus Sliepen +Date: Wed Nov 22 19:14:09 2000 +0000 ------------------------------------------------------------------------- -r396 | zarq | 2000-11-05 03:19:58 +0100 (zo, 05 nov 2000) | 2 lines + - Write pidfile AFTER detaching... + - Minor cleanups -Build-Depends on gettext +commit f8b4a000d008082e5c7e511a49318b8dea8fd08d +Author: Guus Sliepen +Date: Wed Nov 22 18:54:08 2000 +0000 ------------------------------------------------------------------------- -r395 | guus | 2000-11-04 23:57:33 +0100 (za, 04 nov 2000) | 5 lines + - Cleaned up and checked for some more NULL pointers in rbl.c + - Two connection lists: one for incoming connections, sorted on ip/port, + one for connections whose identity we know, sorted on id ofcourse... -- Prepended config_ to all configuration option names, because it confused - everything (including myself). -- Use connection oriented UDP sockets for both incoming and outgoing - packets. +commit 785684f0ec5c9250788b4b32c0eab3f358c9db61 +Author: Ivo Timmermans +Date: Wed Nov 22 17:49:16 2000 +0000 ------------------------------------------------------------------------- -r394 | guus | 2000-11-04 21:44:28 +0100 (za, 04 nov 2000) | 2 lines + Declare fd. -- Simplified ping mechanism. +commit e42255ae1374fe65e92de72de4508a84bdb91fa1 +Author: Ivo Timmermans +Date: Wed Nov 22 17:48:15 2000 +0000 ------------------------------------------------------------------------- -r393 | zarq | 2000-11-04 18:29:45 +0100 (za, 04 nov 2000) | 2 lines + Add more checks to ensure that filedescriptors are right in + _execute_script(). -Build-depends on libtool +commit 2ed68134047a19e708c2a2af32c58968835a7043 +Author: Ivo Timmermans +Date: Wed Nov 22 16:19:07 2000 +0000 ------------------------------------------------------------------------- -r392 | guus | 2000-11-04 18:09:10 +0100 (za, 04 nov 2000) | 2 lines + Honor the --localstatedir option to configure, instead of hardcoded /var. -- Check for packets that are looping back. +commit 9e9e1925b901dff87518f0e1534a33e48eab8303 +Author: Guus Sliepen +Date: Tue Nov 21 09:13:59 2000 +0000 ------------------------------------------------------------------------- -r391 | zarq | 2000-11-04 18:04:17 +0100 (za, 04 nov 2000) | 2 lines + - Check for NULL tree->delete callback + - Add xstrdup() function -Updated Dutch translation +commit da9a1e8084a9b73306bdbc541ee8af938c3e7754 +Author: Guus Sliepen +Date: Mon Nov 20 23:29:47 2000 +0000 ------------------------------------------------------------------------- -r390 | zarq | 2000-11-04 18:01:55 +0100 (za, 04 nov 2000) | 2 lines + - More fixes. -Add route.c to the list of source files. +commit 3a6200c1e39b61b249db3d1f9bcffa77351863bd +Author: Guus Sliepen +Date: Mon Nov 20 22:13:14 2000 +0000 ------------------------------------------------------------------------- -r389 | guus | 2000-11-04 17:54:21 +0100 (za, 04 nov 2000) | 2 lines + - Various small fixes. -- Forward keys in hex notation, not as binary data. +commit 06afd357b0cf4aab778b1ccabbd1be61a9500d10 +Author: Ivo Timmermans +Date: Mon Nov 20 19:56:01 2000 +0000 ------------------------------------------------------------------------- -r388 | guus | 2000-11-04 17:39:19 +0100 (za, 04 nov 2000) | 2 lines + Get rid of all libtool references at once. libtool was only used by + libblowfish, which was superseded by openssl. -- Don't forget to set packet cipher for added hosts. +commit 1857b3c97c261dda9978a67d07b315bb3ca68841 +Author: Guus Sliepen +Date: Mon Nov 20 19:41:13 2000 +0000 ------------------------------------------------------------------------- -r387 | guus | 2000-11-04 16:34:07 +0100 (za, 04 nov 2000) | 2 lines + - Proper initialization of rbltree structures. -- connlist.c added to translation +commit 408ca91766088b6c2d38e198b0692bf394b41248 +Author: Guus Sliepen +Date: Mon Nov 20 19:12:17 2000 +0000 ------------------------------------------------------------------------- -r386 | zarq | 2000-11-04 16:32:05 +0100 (za, 04 nov 2000) | 4 lines + - Integrate rbl trees into tinc. -In execute_script: -- add an environment variable NETNAME. -- chdir to the configuration directory before execing the script. +commit 9024e01ce649b89d304a4aa5b1d6ef0b56b5a12c +Author: Ivo Timmermans +Date: Mon Nov 20 18:06:17 2000 +0000 ------------------------------------------------------------------------- -r385 | zarq | 2000-11-04 16:18:58 +0100 (za, 04 nov 2000) | 2 lines + Also include process.h -Do not include the passphrases directory +commit 3cc063d23a6e3a23fd01f03b0bc99825c2b13e16 +Author: Ivo Timmermans +Date: Mon Nov 20 18:05:34 2000 +0000 ------------------------------------------------------------------------- -r384 | guus | 2000-11-04 16:17:02 +0100 (za, 04 nov 2000) | 2 lines + More function and header checks -- Removed manpage for no longer existing genauth. +commit 59aa15d3d1db4e948113f202dd2183f4bb23970d +Author: Ivo Timmermans +Date: Mon Nov 20 18:02:15 2000 +0000 ------------------------------------------------------------------------- -r383 | guus | 2000-11-04 15:52:40 +0100 (za, 04 nov 2000) | 2 lines + Added this release -- Resolve scriptname after fork() +commit 8f273f0ee265c75dd8eea65b2f1cd60a79691cd6 +Author: Guus Sliepen +Date: Sun Nov 19 22:12:46 2000 +0000 ------------------------------------------------------------------------- -r382 | zarq | 2000-11-04 15:16:46 +0100 (za, 04 nov 2000) | 2 lines + - Small fixes -Use putenv() instead of clumsy do-it-yourself in execute_script. +commit cc7c078774db955cece9b263022e6c1ca955fc10 +Author: Guus Sliepen +Date: Sun Nov 19 11:05:59 2000 +0000 ------------------------------------------------------------------------- -r381 | zarq | 2000-11-04 14:25:15 +0100 (za, 04 nov 2000) | 2 lines + - Deletion also works now. -Small change to the way the environment is copied. +commit 3526f1e151b7a189f075d88c9d88cacaece31d02 +Author: Guus Sliepen +Date: Sun Nov 19 02:04:29 2000 +0000 ------------------------------------------------------------------------- -r380 | guus | 2000-11-04 12:49:58 +0100 (za, 04 nov 2000) | 2 lines + - Fixed a lot of small things. Tested everything except deletions. -- Removed even more warnings. +commit 4f68e5b6133480478edba0959cb87d4eb149a8e7 +Author: Guus Sliepen +Date: Sat Nov 18 23:22:44 2000 +0000 ------------------------------------------------------------------------- -r379 | guus | 2000-11-04 11:37:27 +0100 (za, 04 nov 2000) | 2 lines + - Fix tree head/tail upon insertion -- Removed unused MAC strip/add functions. +commit 880cd6f1a94ef76ebebc5bd96dd26d62e3d829f4 +Author: Guus Sliepen +Date: Sat Nov 18 23:21:01 2000 +0000 ------------------------------------------------------------------------- -r378 | zarq | 2000-11-03 23:35:12 +0100 (vr, 03 nov 2000) | 5 lines + - Implemented deletions + - Added rbl_foreach() function -Warnings removal pass: always include config.h first; add a few -prototypes in the header files. +commit 00e5d572621ad5f0263999dbfbfcb11e023bf48b +Author: Guus Sliepen +Date: Sat Nov 18 18:14:57 2000 +0000 -This also fixes a few lint errors/warnings. + - Fixed searching + - Insertion implemented ------------------------------------------------------------------------- -r377 | zarq | 2000-11-03 23:33:16 +0100 (vr, 03 nov 2000) | 3 lines +commit 7fcc0c6415488ed6ce0089a67ab7cfdd5d0d83ca +Author: Guus Sliepen +Date: Fri Nov 17 10:03:02 2000 +0000 -Run the scripts tinc-up and tinc-down from a separate function, which -sets the environment as it should be and checks for errors. + - Removed stray @INCLUDE@ (how did that get there?) + - Use 0 instead of FALSE ------------------------------------------------------------------------- -r376 | zarq | 2000-11-03 23:31:55 +0100 (vr, 03 nov 2000) | 2 lines +commit 44cbd13e5248880b074b5068df14a4634204a1d3 +Author: Guus Sliepen +Date: Fri Nov 17 00:56:49 2000 +0000 -Save the environment on startup. + - Simplified do_detach ------------------------------------------------------------------------- -r375 | zarq | 2000-11-03 00:02:49 +0100 (vr, 03 nov 2000) | 2 lines +commit 2626c641aa714a8d776f1bb16340586d935aa6b1 +Author: Ivo Timmermans +Date: Thu Nov 16 22:13:09 2000 +0000 -Minor cosmetic change. + Use proper prototypes. ------------------------------------------------------------------------- -r374 | zarq | 2000-11-02 23:51:16 +0100 (do, 02 nov 2000) | 5 lines +commit 5d1145f2c4b3b8261ca0aa0e89a2daf321640f0b +Author: Ivo Timmermans +Date: Thu Nov 16 22:12:23 2000 +0000 -- If necessary, patch po/Makefile.in from po-Makefile.in.in.diff to -get DESTDIR installation (required to get locales installed -correctly). -- Use dh_perl to get accurate perl dependencies. + Move more functions from tincd.c into process.c. ------------------------------------------------------------------------- -r372 | zarq | 2000-11-02 23:11:18 +0100 (do, 02 nov 2000) | 2 lines +commit 485f7a5043a4b3345bd02e5063502603550b4c76 +Author: Ivo Timmermans +Date: Thu Nov 16 22:11:40 2000 +0000 -Oops, and include doc-base.tinc (new file). + Delete struct ifr ------------------------------------------------------------------------- -r371 | zarq | 2000-11-02 23:10:09 +0100 (do, 02 nov 2000) | 2 lines +commit 30f34015ee11bbe1106c07e381288a702f12dac5 +Author: Ivo Timmermans +Date: Thu Nov 16 18:06:39 2000 +0000 -Don't include shlibs, as it no longer exists. + New function: xmalloc_and_zero, which initialises the allocated memory + to all zeroes. ------------------------------------------------------------------------- -r370 | zarq | 2000-11-02 23:05:36 +0100 (do, 02 nov 2000) | 2 lines +commit 2764532ea72200d0a27ad2d79e6e299c00c62404 +Author: Ivo Timmermans +Date: Thu Nov 16 17:54:29 2000 +0000 -Changed a few messages wrt. system calls; updated and changed the Dutch translation a bit. + Move all process-related functions into process.c. ------------------------------------------------------------------------- -r369 | zarq | 2000-11-02 22:43:03 +0100 (do, 02 nov 2000) | 2 lines +commit aa755206da4bcce3261ecd5dbfa41570a0155c73 +Author: Guus Sliepen +Date: Thu Nov 16 09:18:38 2000 +0000 -Mention fileutils, add a pointer to THANKS for more details + - Added balanced tree management stuff as well. (It is not finished yet.) ------------------------------------------------------------------------- -r368 | zarq | 2000-11-02 22:41:53 +0100 (do, 02 nov 2000) | 2 lines +commit 7f87c3d9134612041d56180ea7fc3e6c37991f6b +Author: Ivo Timmermans +Date: Wed Nov 15 22:07:36 2000 +0000 -Change wsl to Wessel's name and email address in the ChangeLog creation + Keep a list of running children, and in each loop in main_loop(), + check if one has exited. ------------------------------------------------------------------------- -r367 | zarq | 2000-11-02 22:40:33 +0100 (do, 02 nov 2000) | 2 lines +commit d9ce5a7f3f5eddb193b6a9b5974c7c49eac41ea1 +Author: Ivo Timmermans +Date: Wed Nov 15 22:04:48 2000 +0000 -More exhaustive list of changes - perhaps it can be worded differently? + List management and manipulation routines. ------------------------------------------------------------------------- -r366 | zarq | 2000-11-02 22:39:57 +0100 (do, 02 nov 2000) | 2 lines +commit e118ba0a648000c48d6a401c9b9249a844d6dbcf +Author: Guus Sliepen +Date: Wed Nov 15 13:33:27 2000 +0000 -Changed `I' to `We' - small change, lots of difference :) + Porting to FreeBSD: + - Reorganized and added some #includes ------------------------------------------------------------------------- -r365 | zarq | 2000-11-02 22:38:55 +0100 (do, 02 nov 2000) | 2 lines +commit 596e248bc588323cc7ee751286dbcaf677b5c653 +Author: Ivo Timmermans +Date: Wed Nov 15 01:28:21 2000 +0000 -Only check for linux/if_tun.h once + Let the output from an executed script in execute_script() go to + syslog, with proper error detection. ------------------------------------------------------------------------- -r364 | zarq | 2000-11-02 22:34:45 +0100 (do, 02 nov 2000) | 2 lines +commit bb2495e569fb161b42efd633eb1c471b8222b1fb +Author: Ivo Timmermans +Date: Wed Nov 15 01:06:13 2000 +0000 -Added a perl example to turn an IP address into a MAC address. + Use the HAVE_OPENSSL_xxx_H defined from m4/openssl.m4 during + configure. ------------------------------------------------------------------------- -r363 | zarq | 2000-11-02 22:26:51 +0100 (do, 02 nov 2000) | 2 lines +commit 6fb4a5b6be5628ece9b391b46e7858fdf5957a80 +Author: Ivo Timmermans +Date: Wed Nov 15 01:02:30 2000 +0000 -Do not include $(top_srcdir)/cipher, it does no longer exist. + Also check for sha.h. ------------------------------------------------------------------------- -r362 | zarq | 2000-11-02 21:29:03 +0100 (do, 02 nov 2000) | 5 lines +commit 8eb60d0ccde2f1de6fd917db7300e537f271783e +Author: Ivo Timmermans +Date: Wed Nov 15 00:57:26 2000 +0000 -- Synchronized changelog with the package's changelog. -- Changed maintainer email address. -- New file doc-base.tinc. -- Better Build-Depends and Depends lines. + Also check for rand.h and err.h. If any of these files does not + exist, try the next alternative path. ------------------------------------------------------------------------- -r361 | zarq | 2000-11-02 21:25:35 +0100 (do, 02 nov 2000) | 2 lines +commit c5c8e99afd3fae3868f20b5c7a4f8754498b39ad +Author: Ivo Timmermans +Date: Tue Nov 14 23:18:19 2000 +0000 -This file is no longer needed. + Get rid of the annoying empty line ------------------------------------------------------------------------- -r359 | guus | 2000-10-31 17:22:49 +0100 (di, 31 okt 2000) | 3 lines +commit c467ee02d3ef8bed7ec2cc52cb1527ec60cdc93a +Author: Ivo Timmermans +Date: Tue Nov 14 23:02:08 2000 +0000 -Removed config file parsing and interface setup. This will be handled by -the tinc-up and tinc-down scripts from now on. + Oops, small error. ------------------------------------------------------------------------- -r358 | guus | 2000-10-31 17:10:17 +0100 (di, 31 okt 2000) | 2 lines +commit 9ddb37cee0f754ef88a55f692a508010fe18c782 +Author: Ivo Timmermans +Date: Tue Nov 14 22:57:19 2000 +0000 -- Update. + Better checks for OpenSSL. I think it can now detect almost all conceivable installations. ------------------------------------------------------------------------- -r357 | guus | 2000-10-30 11:19:06 +0100 (ma, 30 okt 2000) | 2 lines +commit 72c3776d6ac103fa25d216c42847ecba3a4f58e5 +Author: Ivo Timmermans +Date: Mon Nov 13 22:29:22 2000 +0000 -- Fixed some spelling mistakes and terminology here and there. + Identify version as 1.0pre4-cvs ------------------------------------------------------------------------- -r356 | guus | 2000-10-30 01:22:54 +0100 (ma, 30 okt 2000) | 4 lines +commit 5344832be1126967ff340cf6bd270a377bb8e487 +Author: Ivo Timmermans +Date: Mon Nov 13 22:01:27 2000 +0000 -- Small cleanups -- Updated dutch translation -- Updated man pages + Add a check for openssl that accepts explicit file locations. ------------------------------------------------------------------------- -r355 | guus | 2000-10-29 23:55:15 +0100 (zo, 29 okt 2000) | 2 lines +commit 5b74909ea070fbd482340dc42193e33366a9dddb +Author: Ivo Timmermans +Date: Thu Nov 9 21:33:18 2000 +0000 -- Finishing touch: encrypt the meta connections + Add prototype for destroy_queue ------------------------------------------------------------------------- -r354 | guus | 2000-10-29 23:10:44 +0100 (zo, 29 okt 2000) | 2 lines +commit 6e27618708233998db7e5886ed9afaa21bb9d938 +Author: Ivo Timmermans +Date: Thu Nov 9 21:29:58 2000 +0000 -- Use CFB mode for encrypting packets: it works and we don't need padding. + Updates, updates ------------------------------------------------------------------------- -r353 | guus | 2000-10-29 11:39:08 +0100 (zo, 29 okt 2000) | 5 lines +commit a91eae538d9cff8aed399a175c0bbc7d744cd22a +Author: Ivo Timmermans +Date: Thu Nov 9 20:59:35 2000 +0000 -- Small fixes -- Do proper key exchange -- Encrypt packets - it works, but there is something wrong with the MAC - header after decryption... + Bop version number to 1.0pre3-1 ------------------------------------------------------------------------- -r352 | guus | 2000-10-29 10:19:27 +0100 (zo, 29 okt 2000) | 2 lines +commit e65a93053cca3f8aebf63094cf160835c3108e25 +Author: Ivo Timmermans +Date: Thu Nov 9 20:42:16 2000 +0000 -- Removed old encr stuff + Wrapped text to 70 (72?) columns for easy reading ------------------------------------------------------------------------- -r351 | guus | 2000-10-29 03:07:41 +0100 (zo, 29 okt 2000) | 3 lines +commit 4310b17be9cefcc1814ddef471e4c5cd8f9f867e +Author: Ivo Timmermans +Date: Thu Nov 9 20:41:13 2000 +0000 -- Updated dutch translation. -- Shutdown properly. + Final release notes added, also edited release notes for 1.0pre2 to what the announcement on the mailing list looked like. ------------------------------------------------------------------------- -r350 | guus | 2000-10-29 02:27:23 +0100 (zo, 29 okt 2000) | 2 lines +commit 16847ea255fa8a7c0ed922af80a2f36b7bdf4b3b +Author: Guus Sliepen +Date: Wed Nov 8 20:52:37 2000 +0000 -- Moved connlist stuff to the proper header file. + - Make checkpoint tracing a compile time option (off by default) ------------------------------------------------------------------------- -r349 | guus | 2000-10-29 02:08:09 +0100 (zo, 29 okt 2000) | 2 lines +commit 55d7b5a2bb1df6f55f0a93e9cfed77c1da337588 +Author: Guus Sliepen +Date: Wed Nov 8 18:05:06 2000 +0000 -- Enforce correct order of authentication requests + - Add Jamie :) ------------------------------------------------------------------------- -r348 | guus | 2000-10-29 02:46:43 +0200 (zo, 29 okt 2000) | 3 lines +commit 5055e1dedc9fe984c497448c1b2ffc4afdf18aa3 +Author: Guus Sliepen +Date: Wed Nov 8 17:56:34 2000 +0000 -- Hit people who can't figure out subnet address/mask pairs with a - (clue)bat. + - Applied Jamie Brigg's patch (close sockets after error) ------------------------------------------------------------------------- -r347 | guus | 2000-10-29 02:24:31 +0200 (zo, 29 okt 2000) | 3 lines +commit 74326df7adc514798565df0a8719421adbb5fef3 +Author: Guus Sliepen +Date: Wed Nov 8 00:20:06 2000 +0000 -- Fixed ans_key_h -- Removed tapsubnet configuration option. + - Fixed --config + - Show warning when both netname and config directory are given. ------------------------------------------------------------------------- -r346 | guus | 2000-10-29 02:02:20 +0200 (zo, 29 okt 2000) | 2 lines +commit f8f1007bf469d44480d95d0d78ddc156d00e059f +Author: Guus Sliepen +Date: Wed Nov 8 00:10:50 2000 +0000 -- Very big cleanup. + Porting to SunOS 5.8: + - More #includes Linux doesn't seem to need + - Don't do unsetenv() on SunOS + - Use a replacement asprintf() in case the OS doesn't support it + It now compiles properly under SunOS. ------------------------------------------------------------------------- -r345 | guus | 2000-10-28 23:52:22 +0200 (za, 28 okt 2000) | 3 lines +commit 56bd0864e4c5680fee59af48228b1ec3fb97b57b +Author: Guus Sliepen +Date: Tue Nov 7 22:33:33 2000 +0000 -- Override destination ethernet address on incoming packets with - FE:FD:00:00:00:00 + Porting to SunOS 5.8: + - Include all header files necessary + - Check for flock() function ------------------------------------------------------------------------- -r344 | guus | 2000-10-28 23:25:21 +0200 (za, 28 okt 2000) | 2 lines +commit 7d0f82bd4b7044a5151835e25e830fd28dfaaebd +Author: Guus Sliepen +Date: Tue Nov 7 22:02:14 2000 +0000 -- Fixed offsets when reading/writing from/to tap device + - Open UDP connection for all known hosts. Comments please. ------------------------------------------------------------------------- -r343 | guus | 2000-10-28 23:05:20 +0200 (za, 28 okt 2000) | 5 lines +commit f95cc86d0c14ca4c47e5459af4bb6d1170baa9f5 +Author: Guus Sliepen +Date: Tue Nov 7 21:43:28 2000 +0000 -- Lots of small fixes -- Exchange subnets on acknowledgement of connection -- Do proper lookup when incoming packets from tap -- off-by-a small number-error when reading/sending tap packets + Changed execution of tinc-up: + - Do not free() strings that have been putenv()d, see man page of the + latter. + - Do not set IFNAME anymore, it appears that the ioctl to get the name of + the interface does not work at all. Since it is set to NETNAME in case + of tun/tap and it is known beforehand in case of ethertap, there is no + need for it anyway... (though it would've simplified things). ------------------------------------------------------------------------- -r342 | zarq | 2000-10-28 21:34:53 +0200 (za, 28 okt 2000) | 2 lines +commit efc3a2a466937da942afc84dde080ba8b1731140 +Author: Ivo Timmermans +Date: Sun Nov 5 02:19:58 2000 +0000 -Skip the check for Linux kernel sources + Build-Depends on gettext ------------------------------------------------------------------------- -r341 | guus | 2000-10-28 18:41:40 +0200 (za, 28 okt 2000) | 4 lines +commit 698191fd2f512f3618e2d60592fcd57cd750b965 +Author: Guus Sliepen +Date: Sat Nov 4 22:57:33 2000 +0000 -- Updated subnet list handling. Subnets are added to two lists now, the - owner's list and a global list. It is all fucked up but it probably - works anyway, good enough for pre3 :). + - Prepended config_ to all configuration option names, because it confused + everything (including myself). + - Use connection oriented UDP sockets for both incoming and outgoing + packets. ------------------------------------------------------------------------- -r340 | guus | 2000-10-24 17:46:18 +0200 (di, 24 okt 2000) | 4 lines +commit afc05797077641baa33b024ffeaafd6cad3ff7a7 +Author: Guus Sliepen +Date: Sat Nov 4 20:44:28 2000 +0000 -- Lots of little stuff modified -- Succesfully reads in subnets from host config file now and adds them to - the list. + - Simplified ping mechanism. ------------------------------------------------------------------------- -r339 | zarq | 2000-10-23 23:56:56 +0200 (ma, 23 okt 2000) | 2 lines +commit 2191d894bfd615e8fa7857d031ea630edc12a854 +Author: Ivo Timmermans +Date: Sat Nov 4 17:29:45 2000 +0000 -Oops, echelon change committed to cabal... :) + Build-depends on libtool ------------------------------------------------------------------------- -r338 | guus | 2000-10-23 15:52:54 +0200 (ma, 23 okt 2000) | 2 lines +commit 5019dd879177b5ab9413e5c0aa72a15d0e585acf +Author: Guus Sliepen +Date: Sat Nov 4 17:09:10 2000 +0000 -- route.c will contain the routing logic. + - Check for packets that are looping back. ------------------------------------------------------------------------- -r336 | zarq | 2000-10-22 15:47:41 +0200 (zo, 22 okt 2000) | 2 lines +commit 20dd5aff4d2898d8b59f371671cc110b870fa09c +Author: Ivo Timmermans +Date: Sat Nov 4 17:04:17 2000 +0000 -read_server_config: Check for result of read_config_file. + Updated Dutch translation ------------------------------------------------------------------------- -r335 | zarq | 2000-10-22 15:37:15 +0200 (zo, 22 okt 2000) | 2 lines +commit 3f177e9bf02b6121055414a2cc7fd3f4cff01cba +Author: Ivo Timmermans +Date: Sat Nov 4 17:01:55 2000 +0000 -Include linux/sockios.h and net/if.h anyway, regardless of the value of HAVE_TUNTAP. + Add route.c to the list of source files. ------------------------------------------------------------------------- -r334 | guus | 2000-10-21 13:52:08 +0200 (za, 21 okt 2000) | 4 lines +commit ac47586552710425417ed80878f8f853c313b421 +Author: Guus Sliepen +Date: Sat Nov 4 16:54:21 2000 +0000 -- Fixed all debug levels. -- Seed PRNG before generating a challenge -- Strange thing in challenge decryption: it fails if first bit is set!? + - Forward keys in hex notation, not as binary data. ------------------------------------------------------------------------- -r333 | guus | 2000-10-20 21:46:58 +0200 (vr, 20 okt 2000) | 5 lines +commit 3f8f067e8b559366b9b41dee6a4312702c82042f +Author: Guus Sliepen +Date: Sat Nov 4 16:39:19 2000 +0000 -- Removed last reference to genauth from Makefile.am -- Tinc spawns tinc-up and tinc-down scripts which can be used to configure - the network device. The environment variable IFNAME is set to the name - of the interface. + - Don't forget to set packet cipher for added hosts. ------------------------------------------------------------------------- -r332 | guus | 2000-10-20 18:49:20 +0200 (vr, 20 okt 2000) | 4 lines +commit 433858d410c1fedf8d2a5f2b4ecd7c980dd79dd2 +Author: Guus Sliepen +Date: Sat Nov 4 15:34:07 2000 +0000 -- Made Makefile.am stub for doc/es/ -- Merged genauth into tincd -- Updated dutch translation + - connlist.c added to translation ------------------------------------------------------------------------- -r327 | guus | 2000-10-20 17:34:38 +0200 (vr, 20 okt 2000) | 2 lines +commit 15246df85d6171c92478541a835effb96d6085c4 +Author: Ivo Timmermans +Date: Sat Nov 4 15:32:05 2000 +0000 -- tinc now really does public/private key encryption! It even works, whee! + In execute_script: + - add an environment variable NETNAME. + - chdir to the configuration directory before execing the script. ------------------------------------------------------------------------- -r324 | zarq | 2000-10-19 19:29:22 +0200 (do, 19 okt 2000) | 2 lines +commit 69618c01385eb7226cd6eab0918d1f30b0ed6c66 +Author: Ivo Timmermans +Date: Sat Nov 4 15:18:58 2000 +0000 -Changed changelog + Do not include the passphrases directory ------------------------------------------------------------------------- -r323 | guus | 2000-10-19 16:42:00 +0200 (do, 19 okt 2000) | 2 lines +commit 417f36a07990ff9bc7de7d4e63e57146bef0dd75 +Author: Guus Sliepen +Date: Sat Nov 4 15:17:02 2000 +0000 -- Seed the PRNG using /dev/random before generating the keys. + - Removed manpage for no longer existing genauth. ------------------------------------------------------------------------- -r321 | zarq | 2000-10-18 21:44:11 +0200 (wo, 18 okt 2000) | 2 lines +commit 3d7189a444fe3efed58dc93a071129007041aebf +Author: Guus Sliepen +Date: Sat Nov 4 14:52:40 2000 +0000 -Get the head revision up to date with cabal + - Resolve scriptname after fork() ------------------------------------------------------------------------- -r320 | zarq | 2000-10-17 12:15:20 +0200 (di, 17 okt 2000) | 2 lines +commit d38772ebc42f5ad1d946ee89d955f5d43bb2fe8c +Author: Ivo Timmermans +Date: Sat Nov 4 14:16:46 2000 +0000 -Don't declare cp_file and cp_line in xmalloc() + Use putenv() instead of clumsy do-it-yourself in execute_script. ------------------------------------------------------------------------- -r319 | zarq | 2000-10-17 12:14:25 +0200 (di, 17 okt 2000) | 2 lines +commit f83803c1bf6557d5af93982e7cd987e151eba401 +Author: Ivo Timmermans +Date: Sat Nov 4 13:25:15 2000 +0000 -Process subdir es/ + Small change to the way the environment is copied. ------------------------------------------------------------------------- -r318 | guus | 2000-10-16 21:04:47 +0200 (ma, 16 okt 2000) | 2 lines +commit ed0bf283e37642f9f7673f664713a16d916bd70f +Author: Guus Sliepen +Date: Sat Nov 4 11:49:58 2000 +0000 -- More fixing. Tinc daemons can now even create activated connections. + - Removed even more warnings. ------------------------------------------------------------------------- -r317 | guus | 2000-10-16 18:33:30 +0200 (ma, 16 okt 2000) | 4 lines +commit dc699f8b1265deb7606d553e36326527dbd29746 +Author: Guus Sliepen +Date: Sat Nov 4 10:37:27 2000 +0000 -- Fixing little things -- Two tinc daemons can connect to eachother now (but they disconnect right - after the ACKs). + - Removed unused MAC strip/add functions. ------------------------------------------------------------------------- -r316 | zarq | 2000-10-16 13:35:10 +0200 (ma, 16 okt 2000) | 2 lines +commit 5065ea32c32e27478d93c00a1bba0c812b7a2b8c +Author: Ivo Timmermans +Date: Fri Nov 3 22:35:12 2000 +0000 -Output doc/es/Makefile + Warnings removal pass: always include config.h first; add a few + prototypes in the header files. + + This also fixes a few lint errors/warnings. ------------------------------------------------------------------------- -r315 | guus | 2000-10-15 22:30:39 +0200 (zo, 15 okt 2000) | 2 lines +commit 73aa7fbf7e1b623398d1bc1493f567ce4d846f22 +Author: Ivo Timmermans +Date: Fri Nov 3 22:33:16 2000 +0000 -Corrected #ifdefs for tun/tap support. + Run the scripts tinc-up and tinc-down from a separate function, which + sets the environment as it should be and checks for errors. ------------------------------------------------------------------------- -r314 | zarq | 2000-10-15 22:21:27 +0200 (zo, 15 okt 2000) | 2 lines +commit 4ad1e382d6f10acf94ce59d85b80925cee7553a6 +Author: Ivo Timmermans +Date: Fri Nov 3 22:31:55 2000 +0000 -Really #include the if_tun.h files now + Save the environment on startup. ------------------------------------------------------------------------- -r313 | zarq | 2000-10-15 22:13:55 +0200 (zo, 15 okt 2000) | 2 lines +commit 7612c6da3890ce5a0730e4dfde9d5ba07bdbf5b3 +Author: Ivo Timmermans +Date: Thu Nov 2 23:02:49 2000 +0000 -Linearized checks for if_tun.h + Minor cosmetic change. ------------------------------------------------------------------------- -r312 | zarq | 2000-10-15 21:53:15 +0200 (zo, 15 okt 2000) | 2 lines +commit 6a10e42f734e8bec9848a11e73bc2a8211a9f401 +Author: Ivo Timmermans +Date: Thu Nov 2 22:51:16 2000 +0000 -Wrap the tun/tap code in #ifdef HAVE_TUNTAP + - If necessary, patch po/Makefile.in from po-Makefile.in.in.diff to + get DESTDIR installation (required to get locales installed + correctly). + - Use dh_perl to get accurate perl dependencies. ------------------------------------------------------------------------- -r311 | zarq | 2000-10-15 19:26:31 +0200 (zo, 15 okt 2000) | 2 lines +commit ef12849c1a03b3aaf85dd46786d6631f66b104bd +Author: Ivo Timmermans +Date: Thu Nov 2 22:11:18 2000 +0000 -Add checks for the presence of the universal tun/tap device driver. + Oops, and include doc-base.tinc (new file). ------------------------------------------------------------------------- -r309 | guus | 2000-10-15 02:59:37 +0200 (zo, 15 okt 2000) | 5 lines +commit 5672ddd6cb9116420a1904f7741fdbed89c2ec54 +Author: Ivo Timmermans +Date: Thu Nov 2 22:10:09 2000 +0000 -- The daemon actually runs now (somewhat) -- Added support for tun/tap driver (autodetect!) -- More sophisticated checkpoint functionality -- Updated dutch translation + Don't include shlibs, as it no longer exists. ------------------------------------------------------------------------- -r308 | zarq | 2000-10-15 00:22:06 +0200 (zo, 15 okt 2000) | 2 lines +commit 013fcb0e9f9c0222f4f63ddf42a2f25bfc4a5546 +Author: Ivo Timmermans +Date: Thu Nov 2 22:05:36 2000 +0000 -Add CVS id lines + Changed a few messages wrt. system calls; updated and changed the Dutch translation a bit. ------------------------------------------------------------------------- -r307 | zarq | 2000-10-15 00:17:29 +0200 (zo, 15 okt 2000) | 2 lines +commit c444305c0bb965aa515a503406844ceeb483c285 +Author: Ivo Timmermans +Date: Thu Nov 2 21:43:03 2000 +0000 -Fix `Requirements'-section for GMP and OpenSSL libraries. + Mention fileutils, add a pointer to THANKS for more details ------------------------------------------------------------------------- -r306 | zarq | 2000-10-15 00:00:09 +0200 (zo, 15 okt 2000) | 2 lines +commit 84c842def74c5d0e9c4a69e4f584fe9eb66eb728 +Author: Ivo Timmermans +Date: Thu Nov 2 21:41:53 2000 +0000 -Update Depends lines to reflect the dependencies on OpenSSL + Change wsl to Wessel's name and email address in the ChangeLog creation ------------------------------------------------------------------------- -r305 | guus | 2000-10-14 19:04:16 +0200 (za, 14 okt 2000) | 3 lines +commit 5b6815751e581bedd64bfc63aea5b42c746bbceb +Author: Ivo Timmermans +Date: Thu Nov 2 21:40:33 2000 +0000 -- Second fixing-things pass: it even links now. -- Lots of FIXME comments added to the source code. + More exhaustive list of changes - perhaps it can be worded differently? ------------------------------------------------------------------------- -r304 | zarq | 2000-10-14 01:34:56 +0200 (za, 14 okt 2000) | 2 lines +commit e954fc8f0c731e7116fd27f38c176b83cca519f7 +Author: Ivo Timmermans +Date: Thu Nov 2 21:39:57 2000 +0000 -Don't look for GMP header files + Changed `I' to `We' - small change, lots of difference :) ------------------------------------------------------------------------- -r303 | zarq | 2000-10-14 01:30:11 +0200 (za, 14 okt 2000) | 2 lines +commit 3db3a41667f90ce74bfd0197fc867cc71a087e50 +Author: Ivo Timmermans +Date: Thu Nov 2 21:38:55 2000 +0000 -Updated new requirements, pointers to the manual + Only check for linux/if_tun.h once ------------------------------------------------------------------------- -r302 | zarq | 2000-10-14 01:29:35 +0200 (za, 14 okt 2000) | 2 lines +commit 1b11bcb0128ca65580cbf28ffb16078c81e6d678 +Author: Ivo Timmermans +Date: Thu Nov 2 21:34:45 2000 +0000 -Link with OpenSSL, forget libGMP + Added a perl example to turn an IP address into a MAC address. ------------------------------------------------------------------------- -r301 | guus | 2000-10-12 00:01:02 +0200 (do, 12 okt 2000) | 4 lines +commit cadf81fe67aed424504758865c2ea2bb263c76fb +Author: Ivo Timmermans +Date: Thu Nov 2 21:26:51 2000 +0000 -- Fixing-things pass: every source file compiles into an object file now, - but linking tincd does not work yet (must link with openssl libs and - define some missing functions). + Do not include $(top_srcdir)/cipher, it does no longer exist. ------------------------------------------------------------------------- -r300 | guus | 2000-10-11 15:42:52 +0200 (wo, 11 okt 2000) | 2 lines +commit fd32d771a84765281ea4ab8a5d9dbf5cebfa2911 +Author: Ivo Timmermans +Date: Thu Nov 2 20:29:03 2000 +0000 -- Generalized config file parsing to support multiple configuration trees. + - Synchronized changelog with the package's changelog. + - Changed maintainer email address. + - New file doc-base.tinc. + - Better Build-Depends and Depends lines. ------------------------------------------------------------------------- -r299 | guus | 2000-10-11 14:07:27 +0200 (wo, 11 okt 2000) | 2 lines +commit a13d9c9da7434154b33e666c2236844011b87d46 +Author: Ivo Timmermans +Date: Thu Nov 2 20:25:35 2000 +0000 -- Changed genauth to produce rsa keypairs instead of random passphrases. + This file is no longer needed. ------------------------------------------------------------------------- -r298 | guus | 2000-10-11 12:35:17 +0200 (wo, 11 okt 2000) | 6 lines +commit 59528ec892e8b9a599f2b39bf432a3d842e963fe +Author: Guus Sliepen +Date: Tue Oct 31 16:22:49 2000 +0000 -Big and bad commit of my current tree... -- Added seperate file for connection list handling -- Updating everything to use connlist, meta and subnet files -- Removed dependency on libgmp -- Lots of other stuff... + Removed config file parsing and interface setup. This will be handled by + the tinc-up and tinc-down scripts from now on. ------------------------------------------------------------------------- -r295 | guus | 2000-10-04 17:09:57 +0200 (wo, 04 okt 2000) | 2 lines +commit af565d00220b7536b9987c48e2a71459b45027b4 +Author: Guus Sliepen +Date: Tue Oct 31 16:10:17 2000 +0000 -Removing cipher directory (all will be covered by OpenSSL). + - Update. ------------------------------------------------------------------------- -r294 | guus | 2000-10-01 05:21:49 +0200 (zo, 01 okt 2000) | 3 lines +commit b4c1d4e2d3287acd7ca438455c64e50a2828ad24 +Author: Guus Sliepen +Date: Mon Oct 30 10:19:06 2000 +0000 -- Added subnet handling code -- Other small changes to header files + - Fixed some spelling mistakes and terminology here and there. ------------------------------------------------------------------------- -r291 | zarq | 2000-09-27 22:32:29 +0200 (wo, 27 sep 2000) | 2 lines +commit 4811afa073c871f2a52dfd5139bd0171046365eb +Author: Guus Sliepen +Date: Mon Oct 30 00:22:54 2000 +0000 -Many updates, parts rewritten, added, shuffled around. + - Small cleanups + - Updated dutch translation + - Updated man pages ------------------------------------------------------------------------- -r290 | guus | 2000-09-26 16:06:11 +0200 (di, 26 sep 2000) | 5 lines +commit b7d4d4c17712e0bb9ee8bd497a2f525b79d5f40d +Author: Guus Sliepen +Date: Sun Oct 29 22:55:15 2000 +0000 -- Added meta.c which contains functions to send, receive and broadcast - metadata. It will also handle encryption and decryption, and possibly - compression and checksumming. -- Moved request dispatcher to protocol.c. + - Finishing touch: encrypt the meta connections ------------------------------------------------------------------------- -r287 | guus | 2000-09-25 22:08:50 +0200 (ma, 25 sep 2000) | 2 lines +commit ec12269355f7979fdc0783dc15d109832f1e83cd +Author: Guus Sliepen +Date: Sun Oct 29 22:10:44 2000 +0000 -- Very detailed example of the authentication phase. + - Use CFB mode for encrypting packets: it works and we don't need padding. ------------------------------------------------------------------------- -r286 | guus | 2000-09-22 18:20:07 +0200 (vr, 22 sep 2000) | 3 lines +commit cea3d8f3056d3c6aaaef473443240b8470c8ea2d +Author: Guus Sliepen +Date: Sun Oct 29 10:39:08 2000 +0000 -- Removed options "string" stuff. It was a bad idea... -- free() everything that is allocated. + - Small fixes + - Do proper key exchange + - Encrypt packets - it works, but there is something wrong with the MAC + header after decryption... ------------------------------------------------------------------------- -r285 | guus | 2000-09-22 17:06:28 +0200 (vr, 22 sep 2000) | 4 lines +commit 8fa9bc017d89b53798903df3fa98311067d4de90 +Author: Guus Sliepen +Date: Sun Oct 29 09:19:27 2000 +0000 -- Severe code reduction and simplification of challenge requests -- "Finished" [add|del]_subnet_h -- Added lots of sanity checks to [add|del]_host_h + - Removed old encr stuff ------------------------------------------------------------------------- -r284 | guus | 2000-09-17 23:42:05 +0200 (zo, 17 sep 2000) | 4 lines +commit a26d371d0df3bee1bdc6e9d7046e949ee29e6de7 +Author: Guus Sliepen +Date: Sun Oct 29 02:07:41 2000 +0000 -- Updated authentication scheme. -- Removed all trailing spaces from all lines. -- Added things to add_ and del_subnet_h. + - Updated dutch translation. + - Shutdown properly. ------------------------------------------------------------------------- -r283 | guus | 2000-09-17 22:11:59 +0200 (zo, 17 sep 2000) | 3 lines +commit e8391bd49975aa29fa62d6ae1d2d2ee398e0eb3e +Author: Guus Sliepen +Date: Sun Oct 29 01:27:23 2000 +0000 -- Included authentication scheme from protocol.c -- Added a few comments about the symmetric cipher. + - Moved connlist stuff to the proper header file. ------------------------------------------------------------------------- -r282 | guus | 2000-09-17 21:57:39 +0200 (zo, 17 sep 2000) | 3 lines +commit 2689690dc37c384c4a022d03ab80f2cfb7fb9553 +Author: Guus Sliepen +Date: Sun Oct 29 01:08:09 2000 +0000 -Added document about the used cryptographic algorithms and the reasons -behind them. Feel very free to comment on this! + - Enforce correct order of authentication requests ------------------------------------------------------------------------- -r280 | zarq | 2000-09-17 12:28:57 +0200 (zo, 17 sep 2000) | 2 lines +commit 3b9802a542f1fa439321d3386763ec33989194b5 +Author: Guus Sliepen +Date: Sun Oct 29 00:46:43 2000 +0000 -Added Spanish translation of the docs by Matias Carrasco + - Hit people who can't figure out subnet address/mask pairs with a + (clue)bat. ------------------------------------------------------------------------- -r277 | zarq | 2000-09-15 14:58:40 +0200 (vr, 15 sep 2000) | 2 lines +commit 7398002ade1397bd857953f009f4aed65ffc9218 +Author: Guus Sliepen +Date: Sun Oct 29 00:24:31 2000 +0000 -Second round of fixes + - Fixed ans_key_h + - Removed tapsubnet configuration option. ------------------------------------------------------------------------- -r276 | zarq | 2000-09-14 23:51:21 +0200 (do, 14 sep 2000) | 2 lines +commit 35932fe6c8cb481eb687f98424776ce429570c21 +Author: Guus Sliepen +Date: Sun Oct 29 00:02:20 2000 +0000 -First round of needed fixes after the overhaul + - Very big cleanup. ------------------------------------------------------------------------- -r275 | zarq | 2000-09-14 16:34:38 +0200 (do, 14 sep 2000) | 2 lines +commit db21f015161aac244ec5600c4d0ff685549892c2 +Author: Guus Sliepen +Date: Sat Oct 28 21:52:22 2000 +0000 -New directive: Name. + - Override destination ethernet address on incoming packets with + FE:FD:00:00:00:00 ------------------------------------------------------------------------- -r274 | zarq | 2000-09-14 16:32:34 +0200 (do, 14 sep 2000) | 2 lines +commit 8738c007b15eea024bc4ca6ee0f972b2f5bf259f +Author: Guus Sliepen +Date: Sat Oct 28 21:25:21 2000 +0000 -Added some structures and types that are needed for the overhaul. + - Fixed offsets when reading/writing from/to tap device ------------------------------------------------------------------------- -r273 | guus | 2000-09-14 13:54:51 +0200 (do, 14 sep 2000) | 2 lines +commit f25868fd2b58bc0b350a5cfaf342480f28f804cf +Author: Guus Sliepen +Date: Sat Oct 28 21:05:20 2000 +0000 -- Lots of small changes. + - Lots of small fixes + - Exchange subnets on acknowledgement of connection + - Do proper lookup when incoming packets from tap + - off-by-a small number-error when reading/sending tap packets ------------------------------------------------------------------------- -r272 | zarq | 2000-09-11 13:40:46 +0200 (ma, 11 sep 2000) | 2 lines +commit ba6b8005ebe3a53877590c242ff581dc5dee5eae +Author: Ivo Timmermans +Date: Sat Oct 28 19:34:53 2000 +0000 -Better checks for SunOS libraries + Skip the check for Linux kernel sources ------------------------------------------------------------------------- -r271 | guus | 2000-09-11 12:05:35 +0200 (ma, 11 sep 2000) | 3 lines +commit d47d5932a3bbc4940aa6453ebfe617ef330783c8 +Author: Guus Sliepen +Date: Sat Oct 28 16:41:40 2000 +0000 -- Fixed modulo in keylength check -- Updated header file to reflect new protocol code + - Updated subnet list handling. Subnets are added to two lists now, the + owner's list and a global list. It is all fucked up but it probably + works anyway, good enough for pre3 :). ------------------------------------------------------------------------- -r270 | guus | 2000-09-11 01:11:37 +0200 (ma, 11 sep 2000) | 2 lines +commit 9c2f805255fa36b05e8fe9391f639581d938b653 +Author: Guus Sliepen +Date: Tue Oct 24 15:46:18 2000 +0000 -- Some key exchange stuff. (Last commit before going to bed.) + - Lots of little stuff modified + - Succesfully reads in subnets from host config file now and adds them to + the list. ------------------------------------------------------------------------- -r269 | guus | 2000-09-11 00:49:46 +0200 (ma, 11 sep 2000) | 2 lines +commit 60401d99b18ae01d91ca65faf8d2b32fac2b4474 +Author: Ivo Timmermans +Date: Mon Oct 23 21:56:56 2000 +0000 -- Lots of functions added for the new protocol. + Oops, echelon change committed to cabal... :) ------------------------------------------------------------------------- -r268 | zarq | 2000-09-10 23:57:11 +0200 (zo, 10 sep 2000) | 2 lines +commit c46e84837d1c84a8590e0e3507227670368884a7 +Author: Guus Sliepen +Date: Mon Oct 23 13:52:54 2000 +0000 -Add Guus' name and shift out old protocol requests + - route.c will contain the routing logic. ------------------------------------------------------------------------- -r267 | zarq | 2000-09-10 20:37:46 +0200 (zo, 10 sep 2000) | 2 lines +commit 76d794eaf7c1664a47f4d0080fcd80e4a551740b +Author: Ivo Timmermans +Date: Sun Oct 22 13:47:41 2000 +0000 -Correct filenames for passphrases given in the example + read_server_config: Check for result of read_config_file. ------------------------------------------------------------------------- -r266 | guus | 2000-09-10 18:15:35 +0200 (zo, 10 sep 2000) | 2 lines +commit 56d8e862409ae91c63a27968b01a48a94aafb205 +Author: Ivo Timmermans +Date: Sun Oct 22 13:37:15 2000 +0000 -- Added more function skeletons for the new protocol. + Include linux/sockios.h and net/if.h anyway, regardless of the value of HAVE_TUNTAP. ------------------------------------------------------------------------- -r265 | guus | 2000-09-10 17:18:03 +0200 (zo, 10 sep 2000) | 2 lines +commit 52b842f8076d507d3a6ea07045d085ae21d1aa10 +Author: Guus Sliepen +Date: Sat Oct 21 11:52:08 2000 +0000 -- New protocol. Will break everything else for now. + - Fixed all debug levels. + - Seed PRNG before generating a challenge + - Strange thing in challenge decryption: it fails if first bit is set!? ------------------------------------------------------------------------- -r264 | zarq | 2000-09-10 17:16:07 +0200 (zo, 10 sep 2000) | 2 lines +commit 73f7efddd723b25c1477ec1139dc7211307ff660 +Author: Guus Sliepen +Date: Fri Oct 20 19:46:58 2000 +0000 -Support for -lsocket and -lnsl on SunOS + - Removed last reference to genauth from Makefile.am + - Tinc spawns tinc-up and tinc-down scripts which can be used to configure + the network device. The environment variable IFNAME is set to the name + of the interface. ------------------------------------------------------------------------- -r263 | zarq | 2000-09-10 17:15:38 +0200 (zo, 10 sep 2000) | 2 lines +commit fba19c30c92d39e74f5fd5594053793b036f30f4 +Author: Guus Sliepen +Date: Fri Oct 20 16:49:20 2000 +0000 -Include openssl/blowfish.h + - Made Makefile.am stub for doc/es/ + - Merged genauth into tincd + - Updated dutch translation ------------------------------------------------------------------------- -r262 | zarq | 2000-09-10 17:07:41 +0200 (zo, 10 sep 2000) | 2 lines +commit 97ec5685b92ea727fe8f8b4bb8cf289a20f8580b +Author: Ivo Timmermans +Date: Fri Oct 20 16:44:32 2000 +0000 -Updated text, removed protocol flowchart + Generalized list and hash handling functions ------------------------------------------------------------------------- -r261 | zarq | 2000-09-10 17:05:45 +0200 (zo, 10 sep 2000) | 2 lines +commit 699e159a7a1711034f1d16d68ad1974a82e12dfc +Author: Ivo Timmermans +Date: Fri Oct 20 16:43:13 2000 +0000 -Link with OpenSSL crypto libraries instead of own blowfish library + New function: xalloc_and_zero() ------------------------------------------------------------------------- -r260 | guus | 2000-09-06 13:49:05 +0200 (wo, 06 sep 2000) | 3 lines +commit 4059151732afb7d8fb52121d80e54f2ee325d30e +Author: Ivo Timmermans +Date: Fri Oct 20 16:42:22 2000 +0000 -- Use strerror() instead of sys_errlist[] for increased portability - (Needed for SunOS) + Add all the new files to the sources list for the utility library ------------------------------------------------------------------------- -r259 | zarq | 2000-08-27 13:05:47 +0200 (zo, 27 aug 2000) | 2 lines +commit 9f64499e40a95a8c05c82924219517aa017fc411 +Author: Guus Sliepen +Date: Fri Oct 20 15:34:38 2000 +0000 -Changed CVSROOT path in `make ChangeLog' + - tinc now really does public/private key encryption! It even works, whee! ------------------------------------------------------------------------- -r258 | guus | 2000-08-22 16:55:04 +0200 (di, 22 aug 2000) | 2 lines +commit 71f05ff8956cb2e62181fcef763709b0de8faa68 +Author: Ivo Timmermans +Date: Thu Oct 19 20:56:49 2000 +0000 -Fix rules (thanks to Laurence) + Generalized error handling functions ------------------------------------------------------------------------- -r257 | zarq | 2000-08-21 22:35:47 +0200 (ma, 21 aug 2000) | 2 lines +commit 95f4e8620ef8e2cdec1cc3b2ccb8cc8e3ce94e40 +Author: Ivo Timmermans +Date: Thu Oct 19 20:39:04 2000 +0000 -Added a rule to create an rpm + Add check for the syslog function ------------------------------------------------------------------------- -r256 | guus | 2000-08-21 14:50:15 +0200 (ma, 21 aug 2000) | 2 lines +commit 430e14162918864f9f18aad0ec0badc1ccc3e01f +Author: Ivo Timmermans +Date: Thu Oct 19 17:29:22 2000 +0000 -Updated tinc.conf manual. + Changed changelog ------------------------------------------------------------------------- -r255 | zarq | 2000-08-21 01:08:17 +0200 (ma, 21 aug 2000) | 2 lines +commit d5fd1344e668da0bc8536e798f347041d5377843 +Author: Guus Sliepen +Date: Thu Oct 19 14:42:00 2000 +0000 -Also chomp $VPNMASK + - Seed the PRNG using /dev/random before generating the keys. ------------------------------------------------------------------------- -r254 | zarq | 2000-08-21 01:07:18 +0200 (ma, 21 aug 2000) | 6 lines +commit 30df5e95dbe585c6076d743d3771a42ad7c78590 +Author: Ivo Timmermans +Date: Wed Oct 18 20:12:10 2000 +0000 -(Quoting Laurence Lane:) + Bring head revision up to date with cabal (try #3) -The prefix is correctly set for /usr, but is -overridden with the current make install. DESTDIR is the clean way to -relocate the installation into the debian/tmp build dir. +commit 571cfb5846c710a0a3cdbdddce8936f6b34f1cf1 +Author: Ivo Timmermans +Date: Wed Oct 18 19:44:11 2000 +0000 ------------------------------------------------------------------------- -r253 | guus | 2000-08-18 16:45:38 +0200 (vr, 18 aug 2000) | 5 lines + Get the head revision up to date with cabal -Updated the manual: -- incorporated comments from Stefan Hartsuiker -- updated configuration variables section -- added some text about key types +commit e75315dae609f32041ca5ed939fd2a1b69d32d3e +Author: Ivo Timmermans +Date: Tue Oct 17 10:15:20 2000 +0000 ------------------------------------------------------------------------- -r252 | guus | 2000-08-18 13:17:09 +0200 (vr, 18 aug 2000) | 2 lines + Don't declare cp_file and cp_line in xmalloc() -Commented on some size calculations. +commit 31c543ad0fa1d19667a03a9bd183c668def23da0 +Author: Ivo Timmermans +Date: Tue Oct 17 10:14:25 2000 +0000 ------------------------------------------------------------------------- -r251 | guus | 2000-08-17 19:22:01 +0200 (do, 17 aug 2000) | 2 lines + Process subdir es/ -Ran update-po and updated dutch translation. +commit 20301888b7a0a206119d2cfc48ccf1a667bb4add +Author: Guus Sliepen +Date: Mon Oct 16 19:04:47 2000 +0000 ------------------------------------------------------------------------- -r250 | guus | 2000-08-17 18:51:08 +0200 (do, 17 aug 2000) | 2 lines + - More fixing. Tinc daemons can now even create activated connections. -Fixed all sprintf() spl01ts. +commit bb3d18d56fa0dd2bc5146d0a0044b6ef0880bdb4 +Author: Guus Sliepen +Date: Mon Oct 16 16:33:30 2000 +0000 ------------------------------------------------------------------------- -r249 | guus | 2000-08-09 16:02:16 +0200 (wo, 09 aug 2000) | 3 lines + - Fixing little things + - Two tinc daemons can connect to eachother now (but they disconnect right + after the ACKs). -- Added two extra configuration options, Interface and InterfaceIP, to - bind the listen socket to a network device or a specific IP. +commit 6e32b870ee127555888a115163922362c99009f9 +Author: Ivo Timmermans +Date: Mon Oct 16 11:35:10 2000 +0000 ------------------------------------------------------------------------- -r248 | guus | 2000-08-09 11:34:21 +0200 (wo, 09 aug 2000) | 3 lines + Output doc/es/Makefile -- Reinstated O_NONBLOCK for meta socket -- Set SO_KEEPALIVE on meta socket +commit baeac83bf465a47d46082e1de40ea14dcf1d39af +Author: Guus Sliepen +Date: Sun Oct 15 20:30:39 2000 +0000 ------------------------------------------------------------------------- -r247 | guus | 2000-08-08 19:07:48 +0200 (di, 08 aug 2000) | 2 lines + Corrected #ifdefs for tun/tap support. -- Moved TCP packet reception to meta handler: less kludgy and less buggy! +commit 782171fd2c59b7cc5568d2d4b33ce041834710ec +Author: Ivo Timmermans +Date: Sun Oct 15 20:21:27 2000 +0000 ------------------------------------------------------------------------- -r246 | guus | 2000-08-08 16:54:57 +0200 (di, 08 aug 2000) | 2 lines + Really #include the if_tun.h files now -- Added date/time of build and protocol number to --version output. +commit 8a54c51238672abd7a72c1dbdc7d17b9956a0d35 +Author: Ivo Timmermans +Date: Sun Oct 15 20:13:55 2000 +0000 ------------------------------------------------------------------------- -r245 | guus | 2000-08-08 15:47:57 +0200 (di, 08 aug 2000) | 2 lines + Linearized checks for if_tun.h -Removed calling add_queue for tcponly packets. +commit e5130495d7d4083d58ab76c26001aa27f5fc13db +Author: Ivo Timmermans +Date: Sun Oct 15 19:53:15 2000 +0000 ------------------------------------------------------------------------- -r244 | guus | 2000-08-08 10:48:50 +0200 (di, 08 aug 2000) | 2 lines + Wrap the tun/tap code in #ifdef HAVE_TUNTAP -Fixed PACKET read loop. +commit 3b455b8f318528206b08121f5ce93d16e4ea01df +Author: Ivo Timmermans +Date: Sun Oct 15 17:26:31 2000 +0000 ------------------------------------------------------------------------- -r243 | guus | 2000-08-07 18:27:29 +0200 (ma, 07 aug 2000) | 3 lines + Add checks for the presence of the universal tun/tap device driver. -- Lots o' buglets fixed (-Wall helps) -- Made TCPonly work :) +commit 85adeef21275633b78a234b2660cbe3bc9dd2c33 +Author: Guus Sliepen +Date: Sun Oct 15 00:59:37 2000 +0000 ------------------------------------------------------------------------- -r242 | guus | 2000-08-07 16:52:16 +0200 (ma, 07 aug 2000) | 3 lines + - The daemon actually runs now (somewhat) + - Added support for tun/tap driver (autodetect!) + - More sophisticated checkpoint functionality + - Updated dutch translation -- Added experimental hackish tunneling-over-TCP support. - Just use TCPonly = true in the configuration file. +commit 97ce045189e330e121873d1b4be1959c60062cbb +Author: Ivo Timmermans +Date: Sat Oct 14 22:22:06 2000 +0000 ------------------------------------------------------------------------- -r241 | guus | 2000-07-02 15:40:57 +0200 (zo, 02 jul 2000) | 2 lines + Add CVS id lines -- Fixed typo. +commit 2e159d0139e77041ad82e96bf0abef6aaf64a258 +Author: Ivo Timmermans +Date: Sat Oct 14 22:17:29 2000 +0000 ------------------------------------------------------------------------- -r240 | guus | 2000-07-02 15:36:18 +0200 (zo, 02 jul 2000) | 3 lines + Fix `Requirements'-section for GMP and OpenSSL libraries. -- Delayed address resolving for ConnectTo lines in configuration file to - allow DynDNS to work without restarting tincd. +commit 1d5bb49f261b4346b5a440ae6bbf58fe391ea46e +Author: Ivo Timmermans +Date: Sat Oct 14 22:00:09 2000 +0000 ------------------------------------------------------------------------- -r239 | guus | 2000-07-02 14:48:04 +0200 (zo, 02 jul 2000) | 2 lines + Update Depends lines to reflect the dependencies on OpenSSL -- Updated THANKS file +commit e9635ae38e0e2e3eb92568a1e234f8348856dd69 +Author: Guus Sliepen +Date: Sat Oct 14 17:04:16 2000 +0000 ------------------------------------------------------------------------- -r238 | zarq | 2000-07-02 14:41:03 +0200 (zo, 02 jul 2000) | 2 lines + - Second fixing-things pass: it even links now. + - Lots of FIXME comments added to the source code. -Include the Spanish translation in the distribution/build process. +commit 6a8c2e346e6125e58aab428e6730c18a949abe12 +Author: Ivo Timmermans +Date: Fri Oct 13 23:34:56 2000 +0000 ------------------------------------------------------------------------- -r237 | guus | 2000-07-02 14:35:28 +0200 (zo, 02 jul 2000) | 2 lines + Don't look for GMP header files -- Added Spanish translation from Enrique Zanardi. +commit f18e30dab3c208fd353af11e365791035534f444 +Author: Ivo Timmermans +Date: Fri Oct 13 23:30:11 2000 +0000 ------------------------------------------------------------------------- -r235 | guus | 2000-07-01 16:40:56 +0200 (za, 01 jul 2000) | 2 lines + Updated new requirements, pointers to the manual -- Forgot to mention ourselves in the tincd manual page! :) +commit a96f2f0fc8a02593d4cda5976df3c76fc5c99eae +Author: Ivo Timmermans +Date: Fri Oct 13 23:29:35 2000 +0000 ------------------------------------------------------------------------- -r234 | guus | 2000-07-01 16:32:24 +0200 (za, 01 jul 2000) | 4 lines + Link with OpenSSL, forget libGMP -- Updated PROTOCOL (a bit) -- Included a real tincd.8 describing the options, signals, debug levels - and files used by tincd. +commit 183a8edd22ba4bc682392c73ae02fc9e121eda68 +Author: Guus Sliepen +Date: Wed Oct 11 22:01:02 2000 +0000 ------------------------------------------------------------------------- -r231 | guus | 2000-07-01 09:49:21 +0200 (za, 01 jul 2000) | 2 lines + - Fixing-things pass: every source file compiles into an object file now, + but linking tincd does not work yet (must link with openssl libs and + define some missing functions). -- Removed a single unused bit from status_bits_t. +commit 6e39481d8f2406e60b5e329ace08b5a005d5cc43 +Author: Guus Sliepen +Date: Wed Oct 11 13:42:52 2000 +0000 ------------------------------------------------------------------------- -r230 | wsl | 2000-07-01 09:29:32 +0200 (za, 01 jul 2000) | 3 lines + - Generalized config file parsing to support multiple configuration trees. -Added architecture section, made a start with the kernel section. -ToDo: install tinc myself to see if everything is as I say =) +commit 451e9e3e7a968151de541de68603a01f0922b415 +Author: Guus Sliepen +Date: Wed Oct 11 12:07:27 2000 +0000 ------------------------------------------------------------------------- -r229 | guus | 2000-07-01 00:38:58 +0200 (za, 01 jul 2000) | 3 lines + - Changed genauth to produce rsa keypairs instead of random passphrases. -- Added documentation for the protocols (most important the meta protocol) - used by tinc. +commit 950fb8e916b0e248dcaa72c96859acd6046683aa +Author: Guus Sliepen +Date: Wed Oct 11 10:35:17 2000 +0000 ------------------------------------------------------------------------- -r227 | wsl | 2000-06-30 23:16:52 +0200 (vr, 30 jun 2000) | 2 lines + Big and bad commit of my current tree... + - Added seperate file for connection list handling + - Updating everything to use connlist, meta and subnet files + - Removed dependency on libgmp + - Lots of other stuff... -Grrr, recommit +commit 73d0dcfcc1019ee745a422982b4e3ede9d59dd91 +Author: Guus Sliepen +Date: Wed Oct 4 15:09:57 2000 +0000 ------------------------------------------------------------------------- -r224 | guus | 2000-06-30 23:03:51 +0200 (vr, 30 jun 2000) | 2 lines + Removing cipher directory (all will be covered by OpenSSL). -- Made tinc even more silent if no -d flag is given at all. +commit 2228b16159a7aff64e6559ee1635716154e67fe6 +Author: Guus Sliepen +Date: Sun Oct 1 03:21:49 2000 +0000 ------------------------------------------------------------------------- -r222 | wsl | 2000-06-30 22:50:47 +0200 (vr, 30 jun 2000) | 2 lines + - Added subnet handling code + - Other small changes to header files -File added to CABAL (hopefully) +commit 676b1c0ea111406eb94a74ae12878dfd5ad9f56d +Author: Ivo Timmermans +Date: Wed Sep 27 20:32:29 2000 +0000 ------------------------------------------------------------------------- -r219 | guus | 2000-06-30 14:41:06 +0200 (vr, 30 jun 2000) | 5 lines + Many updates, parts rewritten, added, shuffled around. -- Instead of logging an error when remote end closes the connection, - we print a nice message if appropiate debug level is set. -- If we get ADD_HOSTs or DEL_HOSTs for ourself, then connection lists - are really messed up. We restart, and hope our problems go away. +commit c78a204f06182f50b0812c8e4fef6163e82097bf +Author: Guus Sliepen +Date: Tue Sep 26 14:06:11 2000 +0000 ------------------------------------------------------------------------- -r218 | guus | 2000-06-30 13:45:16 +0200 (vr, 30 jun 2000) | 6 lines + - Added meta.c which contains functions to send, receive and broadcast + metadata. It will also handle encryption and decryption, and possibly + compression and checksumming. + - Moved request dispatcher to protocol.c. -- Removed segfault bug in conf.c (must have been there for ages!) -- Made main_loop() signal proof -- #defined MAXTIMEOUT (15 minutes) -- If something really really bad happens, close all connections, wait - for MAXTIMEOUT seconds, and then restart tinc +commit 2c412009e5805f04c650889b19fcb38531f2aa50 +Author: Guus Sliepen +Date: Mon Sep 25 20:08:50 2000 +0000 ------------------------------------------------------------------------- -r217 | guus | 2000-06-29 21:47:04 +0200 (do, 29 jun 2000) | 4 lines + - Very detailed example of the authentication phase. -- Fixed memory leak. -- Implemented SIGHUP configuration file reloading. -- Other small changes. +commit 361690b18c1f5464db7b9cef235c648784780dfb +Author: Guus Sliepen +Date: Fri Sep 22 16:20:07 2000 +0000 ------------------------------------------------------------------------- -r216 | guus | 2000-06-29 19:09:08 +0200 (do, 29 jun 2000) | 4 lines + - Removed options "string" stuff. It was a bad idea... + - free() everything that is allocated. -- New semantics for BASIC_INFO, ADD_HOST and DEL_HOST requests. This will - improve connection list consistency, ensures the tree property, and - allows for recovery from situations where track of connections is lost. +commit 5afc1e98f436c4a2ed5da4b64293275b09632c79 +Author: Guus Sliepen +Date: Fri Sep 22 15:06:28 2000 +0000 ------------------------------------------------------------------------- -r215 | guus | 2000-06-29 15:04:15 +0200 (do, 29 jun 2000) | 5 lines + - Severe code reduction and simplification of challenge requests + - "Finished" [add|del]_subnet_h + - Added lots of sanity checks to [add|del]_host_h -- Removed all IP_ADDR_S macros, because gettext doesn't like them. Each - connection now has two hostnames: real_hostname (replacing the old), - and vpn_hostname. In those places where hostnames really aren't usefull - IP_ADDR_S has been replaced by %d.%d.%d.%d. +commit 5d0b3516d5e8a46ca2268bdb32657b72295501ec +Author: Guus Sliepen +Date: Sun Sep 17 21:42:05 2000 +0000 ------------------------------------------------------------------------- -r214 | guus | 2000-06-29 09:11:23 +0200 (do, 29 jun 2000) | 2 lines + - Updated authentication scheme. + - Removed all trailing spaces from all lines. + - Added things to add_ and del_subnet_h. -- Updated Dutch translation. +commit 84f210edd9e72a65ca8b034a0d3bbc12e506c580 +Author: Guus Sliepen +Date: Sun Sep 17 20:11:59 2000 +0000 ------------------------------------------------------------------------- -r213 | zarq | 2000-06-28 23:06:40 +0200 (wo, 28 jun 2000) | 2 lines + - Included authentication scheme from protocol.c + - Added a few comments about the symmetric cipher. -Oops, and mention Guus too. +commit 2863134a4113b7805a662f45a21a1be0ae9606cb +Author: Guus Sliepen +Date: Sun Sep 17 19:57:39 2000 +0000 ------------------------------------------------------------------------- -r212 | zarq | 2000-06-28 23:01:45 +0200 (wo, 28 jun 2000) | 2 lines + Added document about the used cryptographic algorithms and the reasons + behind them. Feel very free to comment on this! -Removed Free Software Foundation copyright, because Guus Sliepen contributed significantly. +commit 33a5b4547141c11b5128d9f4863fcf6cf8e33452 +Author: Ivo Timmermans +Date: Sun Sep 17 10:28:57 2000 +0000 ------------------------------------------------------------------------- -r211 | guus | 2000-06-28 16:34:40 +0200 (wo, 28 jun 2000) | 2 lines + Added Spanish translation of the docs by Matias Carrasco -- Added log message when SIGCHLD is received ("thanks" to Ivo van Dong) +commit 7f3ab38c222809b15da2fe8dd655d35432eaafe0 +Author: Ivo Timmermans +Date: Fri Sep 15 12:58:40 2000 +0000 ------------------------------------------------------------------------- -r210 | guus | 2000-06-28 15:41:02 +0200 (wo, 28 jun 2000) | 4 lines + Second round of fixes -- Fixed a message in nl.po -- Woops, we forgot to send our connection list to our uplink when we - connect to it... Fixed. +commit ed397b6ac676329b237e219c806143cccf456b3c +Author: Ivo Timmermans +Date: Thu Sep 14 21:51:21 2000 +0000 ------------------------------------------------------------------------- -r209 | guus | 2000-06-28 13:39:40 +0200 (wo, 28 jun 2000) | 2 lines + First round of needed fixes after the overhaul -- Fixed missing " in nl.po +commit 296171d115614d61480d896cd77898f5393c191d +Author: Ivo Timmermans +Date: Thu Sep 14 14:34:38 2000 +0000 ------------------------------------------------------------------------- -r208 | guus | 2000-06-28 13:38:01 +0200 (wo, 28 jun 2000) | 4 lines + New directive: Name. -- Fixed some spelling errors. -- Paar zpelvautjes gerepareerd, en de Nederlandse vertaling weer bij de - tijd gebracht. +commit d335c6d0d7328fd86154dc60b22deb7953ab0228 +Author: Ivo Timmermans +Date: Thu Sep 14 14:32:34 2000 +0000 ------------------------------------------------------------------------- -r207 | guus | 2000-06-28 12:11:10 +0200 (wo, 28 jun 2000) | 2 lines + Added some structures and types that are needed for the overhaul. -- Extra check op EINTR bij inlezen requests +commit c04c84c98055c6b9e9e7890d3992648a3b715a1a +Author: Guus Sliepen +Date: Thu Sep 14 11:54:51 2000 +0000 ------------------------------------------------------------------------- -r206 | guus | 2000-06-27 23:05:07 +0200 (di, 27 jun 2000) | 2 lines + - Lots of small changes. -- Fixes a silly little insignificant buglet. +commit cd6695df82c55454a3f5b644f5c20a8ed31e7c97 +Author: Ivo Timmermans +Date: Mon Sep 11 11:40:46 2000 +0000 ------------------------------------------------------------------------- -r205 | guus | 2000-06-27 22:55:12 +0200 (di, 27 jun 2000) | 2 lines + Better checks for SunOS libraries -- Purge old connections that are ADD_HOSTed. +commit 9c75350ac6c14886195b6d368af2f118fd5d60e0 +Author: Guus Sliepen +Date: Mon Sep 11 10:05:35 2000 +0000 ------------------------------------------------------------------------- -r204 | guus | 2000-06-27 22:10:48 +0200 (di, 27 jun 2000) | 2 lines + - Fixed modulo in keylength check + - Updated header file to reflect new protocol code -- Improved handling of errors on connection attempts. +commit 76b5f255c6cb0c5dfb5a870c371ec6f7c7879bb2 +Author: Guus Sliepen +Date: Sun Sep 10 23:11:37 2000 +0000 ------------------------------------------------------------------------- -r203 | guus | 2000-06-27 17:08:58 +0200 (di, 27 jun 2000) | 3 lines + - Some key exchange stuff. (Last commit before going to bed.) -- Fixed indirectdata=no problem -- Added support for multiple ConnectTo lines in tinc.conf. +commit 675ed08a71ec28d8ae99e10e993d5c7cb717f017 +Author: Guus Sliepen +Date: Sun Sep 10 22:49:46 2000 +0000 ------------------------------------------------------------------------- -r202 | guus | 2000-06-27 14:58:04 +0200 (di, 27 jun 2000) | 4 lines + - Lots of functions added for the new protocol. -- Fixed KEY_CHANGED notification. A lot of notify_others() calls were - wrong (first two arguments swapped). Should probably be doublechecked. -- Don't retry to connect to hosts with different protocol versions. +commit 9926dae4646a96ee647a2ca7d728e91600dd1cca +Author: Ivo Timmermans +Date: Sun Sep 10 21:57:11 2000 +0000 ------------------------------------------------------------------------- -r201 | guus | 2000-06-26 22:30:21 +0200 (ma, 26 jun 2000) | 4 lines + Add Guus' name and shift out old protocol requests -- Moved all connection messages to debug level 1, without -d's only the - startup message will be logged. -- Fixed DEL_HOST rebound. +commit 74157d3f4501f4d1ec913a986b7167d2b847e41e +Author: Ivo Timmermans +Date: Sun Sep 10 18:37:46 2000 +0000 ------------------------------------------------------------------------- -r200 | guus | 2000-06-26 21:39:34 +0200 (ma, 26 jun 2000) | 3 lines + Correct filenames for passphrases given in the example -- Indirectdata finally REALLY REALLY works now! -- More precise debug messages +commit 6b9ec9ed1e818d5e50dda4418ffb4d02c898bcba +Author: Guus Sliepen +Date: Sun Sep 10 16:15:35 2000 +0000 ------------------------------------------------------------------------- -r199 | guus | 2000-06-26 19:20:58 +0200 (ma, 26 jun 2000) | 2 lines + - Added more function skeletons for the new protocol. -Fixes some hostlookups. Fixes indirectdata for real now (hopefully). +commit 28cc30159565a7eda4f66215a5994d84b46b47ad +Author: Guus Sliepen +Date: Sun Sep 10 15:18:03 2000 +0000 ------------------------------------------------------------------------- -r198 | zarq | 2000-06-25 22:52:29 +0200 (zo, 25 jun 2000) | 2 lines + - New protocol. Will break everything else for now. -Version 1.0pre3. +commit 7884d3ecaf78006b3f288d99f10ef541fc97087e +Author: Ivo Timmermans +Date: Sun Sep 10 15:16:07 2000 +0000 ------------------------------------------------------------------------- -r197 | guus | 2000-06-25 18:39:17 +0200 (zo, 25 jun 2000) | 3 lines + Support for -lsocket and -lnsl on SunOS -- More verbose connection list -- Added "myself" as hostname when logging indirect ADD_HOSTs +commit 14554e6f421e881b01be20879e9279545f375154 +Author: Ivo Timmermans +Date: Sun Sep 10 15:15:38 2000 +0000 ------------------------------------------------------------------------- -r196 | guus | 2000-06-25 18:20:27 +0200 (zo, 25 jun 2000) | 2 lines + Include openssl/blowfish.h -Hostlookup() is actually being called now. +commit 45ea3ca432a031ff1b8072d934709aadaae12534 +Author: Ivo Timmermans +Date: Sun Sep 10 15:07:41 2000 +0000 ------------------------------------------------------------------------- -r195 | guus | 2000-06-25 18:01:12 +0200 (zo, 25 jun 2000) | 2 lines + Updated text, removed protocol flowchart -Hostnames are back! +commit ae17572e6b94c6e7a2123ddeb45bf66d389ac7a0 +Author: Ivo Timmermans +Date: Sun Sep 10 15:05:45 2000 +0000 ------------------------------------------------------------------------- -r194 | guus | 2000-06-25 17:45:09 +0200 (zo, 25 jun 2000) | 4 lines + Link with OpenSSL crypto libraries instead of own blowfish library -- Log possible spoofing attacks. -- Don't broadcast DEL_HOSTs for hosts that haven't been activated yet. -- If a host sends a TERMREQ, deactivate them. +commit 4dde583bc91985c3ff19ac1d1f1bc791b50658ff +Author: Guus Sliepen +Date: Wed Sep 6 11:49:05 2000 +0000 ------------------------------------------------------------------------- -r193 | zarq | 2000-06-25 17:42:40 +0200 (zo, 25 jun 2000) | 2 lines + - Use strerror() instead of sys_errlist[] for increased portability + (Needed for SunOS) -Changed version number to 1.0pre3. +commit 66e535a729dd5a9e45600ab74dc19c2b4062ee96 +Author: Ivo Timmermans +Date: Sun Aug 27 11:05:47 2000 +0000 ------------------------------------------------------------------------- -r192 | guus | 2000-06-25 17:22:16 +0200 (zo, 25 jun 2000) | 2 lines + Changed CVSROOT path in `make ChangeLog' -Added CVS Id tags to header files. +commit 39e159fbe6bbffb3229542258f956fc412bd871c +Author: Guus Sliepen +Date: Tue Aug 22 14:55:04 2000 +0000 ------------------------------------------------------------------------- -r191 | guus | 2000-06-25 17:16:12 +0200 (zo, 25 jun 2000) | 12 lines + Fix rules (thanks to Laurence) -Large cleanup: -- Removed hostname lookup (it blocks, and you can always do it yourself) -- Reorganized debug levels (after hints from Axel M�ller): - 0 Startup message and errors - 1 Connection logging - 2 Meta protocol information - 3 Verbose meta protocol (includes copy of transmitted requests) - 4 Packet information (logs transmission/errors of UDP packets) - 5 Verbose packet information (every single byte, not implemented yet - to protect ourselves from filling up /var/log directories) -- Made log messages more consistent +commit 47992fe59f4c1b4116e4872d59251b143edc6763 +Author: Ivo Timmermans +Date: Mon Aug 21 20:35:47 2000 +0000 ------------------------------------------------------------------------- -r190 | guus | 2000-06-24 14:35:42 +0200 (za, 24 jun 2000) | 2 lines + Added a rule to create an rpm -If we have "indirectdata" flag set, we only send data to our uplink. +commit d9af4f32330a495789d8eecdabbbb49928f074a7 +Author: Guus Sliepen +Date: Mon Aug 21 12:50:15 2000 +0000 ------------------------------------------------------------------------- -r189 | guus | 2000-06-23 21:27:03 +0200 (vr, 23 jun 2000) | 5 lines + Updated tinc.conf manual. -First step for implementation of the "indirectdata" directive. This should -allow _leaf_ tincds to be behind firewalls. -The protocol has changed and is INCOMPATIBLE with previous versions. The -PROT_CURRENT value has been incremented. +commit 94a32c4b2d2ff5d4bb1376fe5ec96c6dec55f630 +Author: Ivo Timmermans +Date: Sun Aug 20 23:08:17 2000 +0000 ------------------------------------------------------------------------- -r188 | zarq | 2000-06-17 22:55:54 +0200 (za, 17 jun 2000) | 2 lines + Also chomp $VPNMASK -Configuration directive `IndirectData'. +commit 861e808fef1f6796d837215f9ad135fb4cb50f5c +Author: Ivo Timmermans +Date: Sun Aug 20 23:07:18 2000 +0000 ------------------------------------------------------------------------- -r187 | zarq | 2000-06-17 22:30:44 +0200 (za, 17 jun 2000) | 2 lines + (Quoting Laurence Lane:) + + The prefix is correctly set for /usr, but is + overridden with the current make install. DESTDIR is the clean way to + relocate the installation into the debian/tmp build dir. -Merge changes from 1.6-1.8. +commit d3f41b803bf3c38910f24f1f268f182466723149 +Author: Guus Sliepen +Date: Fri Aug 18 14:45:38 2000 +0000 ------------------------------------------------------------------------- -r184 | zarq | 2000-06-06 12:24:33 +0200 (di, 06 jun 2000) | 2 lines + Updated the manual: + - incorporated comments from Stefan Hartsuiker + - updated configuration variables section + - added some text about key types -Include ../intl in the include path, and add @INTLLIBS@ to the list of libraries. +commit 5c78e158d414595ab32399645678a43bb4469be6 +Author: Guus Sliepen +Date: Fri Aug 18 11:17:09 2000 +0000 ------------------------------------------------------------------------- -r183 | zarq | 2000-06-04 14:14:31 +0200 (zo, 04 jun 2000) | 2 lines + Commented on some size calculations. -These files are created by gettextize (run by autogen.sh) (should have known that). +commit d2c062a0a440d2871939b4ffdc2dbb137a4d45e7 +Author: Guus Sliepen +Date: Thu Aug 17 17:22:01 2000 +0000 ------------------------------------------------------------------------- -r180 | zarq | 2000-06-04 01:32:03 +0200 (zo, 04 jun 2000) | 2 lines + Ran update-po and updated dutch translation. -Don't touch VPNMASK if it's defined, otherwise use $MSK. +commit 3831f51a53088bfcc1d148fd54b3083afe7fde32 +Author: Guus Sliepen +Date: Thu Aug 17 16:51:08 2000 +0000 ------------------------------------------------------------------------- -r178 | zarq | 2000-06-02 19:30:33 +0200 (vr, 02 jun 2000) | 2 lines + Fixed all sprintf() spl01ts. -Alphabetized the list, added Lubom�r Bulej, removed Sander Smeenk and Tijs van Bakel, put merits after all names. +commit 9acd4379f705edc8b736e21b9011434e63f7dd95 +Author: Guus Sliepen +Date: Wed Aug 9 14:02:16 2000 +0000 ------------------------------------------------------------------------- -r177 | guus | 2000-06-01 22:21:27 +0200 (do, 01 jun 2000) | 2 lines + - Added two extra configuration options, Interface and InterfaceIP, to + bind the listen socket to a network device or a specific IP. -Debian init.d script automatically sets tap device's MTU to 1448 now. +commit f6d79366b3efaef0a458717aac5e6754630dd434 +Author: Guus Sliepen +Date: Wed Aug 9 09:34:21 2000 +0000 ------------------------------------------------------------------------- -r176 | zarq | 2000-05-31 20:23:06 +0200 (wo, 31 mei 2000) | 2 lines + - Reinstated O_NONBLOCK for meta socket + - Set SO_KEEPALIVE on meta socket -Miscellaneous copyright updates. +commit 3cfc9424f255c26f2a7775b6fa059f1e3e47a76e +Author: Guus Sliepen +Date: Tue Aug 8 17:07:48 2000 +0000 ------------------------------------------------------------------------- -r175 | zarq | 2000-05-31 20:21:27 +0200 (wo, 31 mei 2000) | 2 lines + - Moved TCP packet reception to meta handler: less kludgy and less buggy! -Handle locale settings. +commit e092d15be17db1d69c37f2aba46c66e03631c099 +Author: Guus Sliepen +Date: Tue Aug 8 14:54:57 2000 +0000 ------------------------------------------------------------------------- -r174 | zarq | 2000-05-31 20:19:33 +0200 (wo, 31 mei 2000) | 2 lines + - Added date/time of build and protocol number to --version output. -Version 1.0pre2-1. +commit ff87f385c3a81499eff6b848aed8548cf6e5132e +Author: Guus Sliepen +Date: Tue Aug 8 13:47:57 2000 +0000 ------------------------------------------------------------------------- -r173 | zarq | 2000-05-31 20:18:21 +0200 (wo, 31 mei 2000) | 2 lines + Removed calling add_queue for tcponly packets. -Updated Dutch translation. +commit ac73c72488dd8b33464fac1f392e89df48f7a23b +Author: Guus Sliepen +Date: Tue Aug 8 08:48:50 2000 +0000 ------------------------------------------------------------------------- -r172 | zarq | 2000-05-31 20:17:45 +0200 (wo, 31 mei 2000) | 2 lines + Fixed PACKET read loop. -Tell about /etc/tinc/nets.boot. +commit b6997b0050e78a2f2e517beba3ff01d9232b3d1f +Author: Guus Sliepen +Date: Mon Aug 7 16:27:29 2000 +0000 ------------------------------------------------------------------------- -r171 | zarq | 2000-05-31 20:17:27 +0200 (wo, 31 mei 2000) | 2 lines + - Lots o' buglets fixed (-Wall helps) + - Made TCPonly work :) -Include news for 1.0pre2. +commit fdc6a2f106315cd9ed22943d8c0bd279631e66b4 +Author: Guus Sliepen +Date: Mon Aug 7 14:52:16 2000 +0000 ------------------------------------------------------------------------- -r170 | zarq | 2000-05-30 23:36:16 +0200 (di, 30 mei 2000) | 2 lines + - Added experimental hackish tunneling-over-TCP support. + Just use TCPonly = true in the configuration file. -Only accept an ADD_HOST request for a host that already exists in our conn_list if the nexthop field matches the sender. This is a workaround for older clients. +commit 42455e97a057fb4386f9d8fb2f8963b2ec6ddf24 +Author: Guus Sliepen +Date: Sun Jul 2 13:40:57 2000 +0000 ------------------------------------------------------------------------- -r169 | zarq | 2000-05-30 14:38:15 +0200 (di, 30 mei 2000) | 2 lines + - Fixed typo. -In terminate_connection, only send a notification to hosts that are directly connected to us. (DEL_HOST gets forwarded automatically.) +commit b1ecbf977722ec473fc8007acd39eb0de581de1a +Author: Guus Sliepen +Date: Sun Jul 2 13:36:18 2000 +0000 ------------------------------------------------------------------------- -r168 | zarq | 2000-05-30 14:31:41 +0200 (di, 30 mei 2000) | 2 lines + - Delayed address resolving for ConnectTo lines in configuration file to + allow DynDNS to work without restarting tincd. -When a connection is terminated, all hosts that are still connected get notified of the lost connections. +commit 6642ec2ea4e97a2fb3e737653ab1b9351ac759e9 +Author: Guus Sliepen +Date: Sun Jul 2 12:48:04 2000 +0000 ------------------------------------------------------------------------- -r167 | zarq | 2000-05-30 13:18:12 +0200 (di, 30 mei 2000) | 2 lines + - Updated THANKS file -Added new configuration directive `Hostnames', which controls the resolving of IP addresses to hostnames. +commit e0de803c7e80621600409a0c760241a3d97617bd +Author: Ivo Timmermans +Date: Sun Jul 2 12:41:03 2000 +0000 ------------------------------------------------------------------------- -r166 | guus | 2000-05-30 01:40:05 +0200 (di, 30 mei 2000) | 3 lines + Include the Spanish translation in the distribution/build process. -Only activate a connection upon receiving it's public key if it's an -incoming connection. When it's outgoing, we need to receive an ack first. +commit 721d85f77277813345bdb63a610e984cec996613 +Author: Guus Sliepen +Date: Sun Jul 2 12:35:28 2000 +0000 ------------------------------------------------------------------------- -r165 | zarq | 2000-05-30 00:27:15 +0200 (di, 30 mei 2000) | 2 lines + - Added Spanish translation from Enrique Zanardi. -Updated changes list for version 1.0pre2. +commit e821a22876d15c921a4c1fbc0f792d83e90916f6 +Author: Guus Sliepen +Date: Sat Jul 1 14:40:56 2000 +0000 ------------------------------------------------------------------------- -r164 | zarq | 2000-05-30 00:20:04 +0200 (di, 30 mei 2000) | 2 lines + - Forgot to mention ourselves in the tincd manual page! :) -Bounds check for request id (between 0 and 255). +commit 09f4ec190119298187cec09dd5049af8fd8bad94 +Author: Guus Sliepen +Date: Sat Jul 1 14:32:24 2000 +0000 ------------------------------------------------------------------------- -r163 | zarq | 2000-05-30 00:15:38 +0200 (di, 30 mei 2000) | 2 lines + - Updated PROTOCOL (a bit) + - Included a real tincd.8 describing the options, signals, debug levels + and files used by tincd. -Dutch translation of tinc. +commit d3ea434b3684093d6d160b8077c1f51a50ac7f61 +Author: Ivo Timmermans +Date: Sat Jul 1 10:39:28 2000 +0000 ------------------------------------------------------------------------- -r162 | zarq | 2000-05-29 23:40:51 +0200 (ma, 29 mei 2000) | 2 lines + Autogenerated by gettextize. -Define LOCALEDIR in CFLAGS. +commit 1b28f88808b9ac3193cf9a0db7a81a89eed8b4ef +Author: Guus Sliepen +Date: Sat Jul 1 07:49:21 2000 +0000 ------------------------------------------------------------------------- -r161 | zarq | 2000-05-29 23:40:20 +0200 (ma, 29 mei 2000) | 2 lines + - Removed a single unused bit from status_bits_t. -Include GNU gettext checks. +commit 7fdc881b86fe379216f09dd5703bb88d398c87a8 +Author: Wessel Dankers +Date: Sat Jul 1 07:29:32 2000 +0000 ------------------------------------------------------------------------- -r160 | zarq | 2000-05-29 23:38:02 +0200 (ma, 29 mei 2000) | 2 lines + Added architecture section, made a start with the kernel section. + ToDo: install tinc myself to see if everything is as I say =) -Update acconfig.h to include values for gettext inclusion. +commit 8ec648abf438bb5fcfe84e3a1c6a31192dc32b2e +Author: Guus Sliepen +Date: Fri Jun 30 22:38:58 2000 +0000 ------------------------------------------------------------------------- -r159 | zarq | 2000-05-29 23:36:28 +0200 (ma, 29 mei 2000) | 2 lines + - Added documentation for the protocols (most important the meta protocol) + used by tinc. -Include system.h and ABOUT-NLS. +commit ce72275a4342ff4e21d21bb740ee88dca1ddb5f1 +Author: Wessel Dankers +Date: Fri Jun 30 21:16:52 2000 +0000 ------------------------------------------------------------------------- -r158 | zarq | 2000-05-29 23:04:55 +0200 (ma, 29 mei 2000) | 2 lines + Grrr, recommit -Include intl/ directory in the list of subdirs. +commit bbbdda255d6e7a8730906a1b6c2bfdd2ce1b94cf +Author: Wessel Dankers +Date: Fri Jun 30 21:11:34 2000 +0000 ------------------------------------------------------------------------- -r157 | zarq | 2000-05-29 23:01:26 +0200 (ma, 29 mei 2000) | 2 lines + This file is now only in the CABAL revision. -Internationalization of tinc. +commit 28a140668f892873b01afe104d21db4adb8fd8c7 +Author: Wessel Dankers +Date: Fri Jun 30 21:09:32 2000 +0000 ------------------------------------------------------------------------- -r156 | guus | 2000-05-27 22:23:01 +0200 (za, 27 mei 2000) | 4 lines + More about keys -Terminate a connection on any error. Furthermore, disallow del_host, -add_host and other important requests until remote host has properly -authenticated itself. +commit 1a1ebefd572c18d6af187750847b024ce07551ae +Author: Guus Sliepen +Date: Fri Jun 30 21:03:51 2000 +0000 ------------------------------------------------------------------------- -r155 | guus | 2000-05-27 21:44:04 +0200 (za, 27 mei 2000) | 4 lines + - Made tinc even more silent if no -d flag is given at all. -Made tinc persistent. If no outgoing connection can be established right -after the start of the daemon, it won't quit anymore but will retry in 5 -minutes. Also, 5 minutes is now the maximum time to wait for a retry. +commit 79ad21c392e56cad2556e7693b9639d8e2346a59 +Author: Wessel Dankers +Date: Fri Jun 30 20:57:30 2000 +0000 ------------------------------------------------------------------------- -r154 | guus | 2000-05-27 21:23:20 +0200 (za, 27 mei 2000) | 3 lines + Added extra bit about keys. -Fixed typos. When terminating a connection, it's status is not only set to -remove=1 but also active=0. +commit 8309e9b869c25677d674f5cecb8b7ac5469d1758 +Author: Wessel Dankers +Date: Fri Jun 30 20:50:47 2000 +0000 ------------------------------------------------------------------------- -r153 | guus | 2000-05-27 21:04:12 +0200 (za, 27 mei 2000) | 11 lines + File added to CABAL (hopefully) -Fix for a DoS attack: - A remote user could telnet to the tinc daemon and type only this line: - 61 6 00000000/00000000:28f - This would deny any packets to be sent to other tinc networks (except - for to the hosts that run tincd's themselves). Solution is to skip - hosts in lookup_conn() that have not been activated yet. -Fixed potential conn_list table corruption: - If a new connection is accepted but a connection with the same subnet - would already exist in the connection list, the OLD connection is - terminated. +commit 5cd0f940c7334959534d3ab4e1f3c7cac67ee38a +Author: Wessel Dankers +Date: Fri Jun 30 20:42:07 2000 +0000 ------------------------------------------------------------------------- -r152 | guus | 2000-05-27 15:21:20 +0200 (za, 27 mei 2000) | 4 lines + added bit on config file, split up sections, added Id: tag -Documentation updates. Removed all references to configuration variable -"AllowConnect", since it is NOT used in tinc. Added information about -"VpnMask". Elaborated a bit about "private" and "virtual" networks. +commit 6f5aac4e39cd6fb2fb76c0121de3f3782f72f18e +Author: Wessel Dankers +Date: Fri Jun 30 20:16:15 2000 +0000 ------------------------------------------------------------------------- -r151 | zarq | 2000-05-26 13:25:59 +0200 (vr, 26 mei 2000) | 2 lines + Initial revision. Lots of loose ends, not usable yet. -Updated by Lubomir Bulej and Mads Kiilerich: it uses /etc/tinc/nets.boot and the VpnMask directive in the config files. +commit c5737583c8a5d099a71174e1eb997e0972ae03e9 +Author: Guus Sliepen +Date: Fri Jun 30 12:41:06 2000 +0000 ------------------------------------------------------------------------- -r150 | zarq | 2000-05-22 01:01:28 +0200 (ma, 22 mei 2000) | 2 lines + - Instead of logging an error when remote end closes the connection, + we print a nice message if appropiate debug level is set. + - If we get ADD_HOSTs or DEL_HOSTs for ourself, then connection lists + are really messed up. We restart, and hope our problems go away. -Create an empty /etc/tinc/nets.boot. +commit 24874d0806bac5d75663ea9de67a71171bfc97b6 +Author: Guus Sliepen +Date: Fri Jun 30 11:45:16 2000 +0000 ------------------------------------------------------------------------- -r149 | zarq | 2000-05-22 00:40:41 +0200 (ma, 22 mei 2000) | 2 lines + - Removed segfault bug in conf.c (must have been there for ages!) + - Made main_loop() signal proof + - #defined MAXTIMEOUT (15 minutes) + - If something really really bad happens, close all connections, wait + for MAXTIMEOUT seconds, and then restart tinc -Use /etc/tinc/example as a base directory for an example. /etc/tinc/example/README points to /usr/share/doc/tinc/README.Debian. +commit 0f9ad1f047efec53590dc43f07d225e5f20456cb +Author: Guus Sliepen +Date: Thu Jun 29 19:47:04 2000 +0000 ------------------------------------------------------------------------- -r148 | zarq | 2000-05-22 00:38:01 +0200 (ma, 22 mei 2000) | 2 lines + - Fixed memory leak. + - Implemented SIGHUP configuration file reloading. + - Other small changes. -Add an example of using VpnMask. +commit 18c85caac36f7236454deef11b9eba74328dbd96 +Author: Guus Sliepen +Date: Thu Jun 29 17:09:08 2000 +0000 ------------------------------------------------------------------------- -r147 | zarq | 2000-05-22 00:27:31 +0200 (ma, 22 mei 2000) | 2 lines + - New semantics for BASIC_INFO, ADD_HOST and DEL_HOST requests. This will + improve connection list consistency, ensures the tree property, and + allows for recovery from situations where track of connections is lost. -When VpnMask is not present in the config file, silently use $MSK as vpnmask. +commit e8e7379311ca3bf6e1fdd7d0f477a43e510e2317 +Author: Guus Sliepen +Date: Thu Jun 29 13:04:15 2000 +0000 ------------------------------------------------------------------------- -r146 | guus | 2000-05-22 00:21:38 +0200 (ma, 22 mei 2000) | 4 lines + - Removed all IP_ADDR_S macros, because gettext doesn't like them. Each + connection now has two hostnames: real_hostname (replacing the old), + and vpn_hostname. In those places where hostnames really aren't usefull + IP_ADDR_S has been replaced by %d.%d.%d.%d. -Fixed last typo. Init.d now uses ifconfig command to set both the tap's IP -address as well as the correct route. Furthermore, if no VpnMask is given, -a default of 255.255.0.0 is chosen and a warning issued. +commit e0ddb638d1fb7abf19969ac887f3b7a2bd8225c1 +Author: Guus Sliepen +Date: Thu Jun 29 07:11:23 2000 +0000 ------------------------------------------------------------------------- -r145 | guus | 2000-05-22 00:08:21 +0200 (ma, 22 mei 2000) | 2 lines + - Updated Dutch translation. -Typo. +commit 0a155580a3d55633bbc3a1e7dcbe8906f41913be +Author: Ivo Timmermans +Date: Wed Jun 28 21:06:40 2000 +0000 ------------------------------------------------------------------------- -r144 | guus | 2000-05-22 00:04:56 +0200 (ma, 22 mei 2000) | 2 lines + Oops, and mention Guus too. -VpnMask truely works now. +commit f2c9e7f3bbada3fbfe80f622ebc06540afb60c21 +Author: Ivo Timmermans +Date: Wed Jun 28 21:01:45 2000 +0000 ------------------------------------------------------------------------- -r143 | zarq | 2000-05-19 03:17:32 +0200 (vr, 19 mei 2000) | 2 lines + Removed Free Software Foundation copyright, because Guus Sliepen contributed significantly. -Mask the vpn net with the vpn netmask, route would give an error if the netmask didn't match the net. +commit 3df9b89204626afdd514d5b7323801af76a5cd26 +Author: Guus Sliepen +Date: Wed Jun 28 14:34:40 2000 +0000 ------------------------------------------------------------------------- -r142 | zarq | 2000-05-19 02:58:01 +0200 (vr, 19 mei 2000) | 2 lines + - Added log message when SIGCHLD is received ("thanks" to Ivo van Dong) -Fixed typo. +commit 8c6c60adf3d5942c6368bafe9a4d4377ffad1abe +Author: Guus Sliepen +Date: Wed Jun 28 13:41:02 2000 +0000 ------------------------------------------------------------------------- -r141 | zarq | 2000-05-19 02:33:44 +0200 (vr, 19 mei 2000) | 2 lines + - Fixed a message in nl.po + - Woops, we forgot to send our connection list to our uplink when we + connect to it... Fixed. -Updated copyright notice. +commit 63c5192d570e2ba5952b4e5a807e4ab4d6fdad76 +Author: Guus Sliepen +Date: Wed Jun 28 11:39:40 2000 +0000 ------------------------------------------------------------------------- -r140 | zarq | 2000-05-19 02:15:37 +0200 (vr, 19 mei 2000) | 2 lines + - Fixed missing " in nl.po -Errors will not terminate the script or result in a nonzero exit code. +commit ea40d3f1a05e9edf4ccfb77f4e9e0f8355e94a83 +Author: Guus Sliepen +Date: Wed Jun 28 11:38:01 2000 +0000 ------------------------------------------------------------------------- -r139 | zarq | 2000-05-19 02:14:34 +0200 (vr, 19 mei 2000) | 2 lines + - Fixed some spelling errors. + - Paar zpelvautjes gerepareerd, en de Nederlandse vertaling weer bij de + tijd gebracht. -Include postinst in the distribution. +commit dba2995db73313b1c0a56ce13395dac0bc7571a5 +Author: Guus Sliepen +Date: Wed Jun 28 10:11:10 2000 +0000 ------------------------------------------------------------------------- -r138 | zarq | 2000-05-19 02:09:20 +0200 (vr, 19 mei 2000) | 2 lines + - Extra check op EINTR bij inlezen requests -Find networks in instead of . +commit 4ee53e7dac93d1edad8664edffdfaf142438b85d +Author: Guus Sliepen +Date: Tue Jun 27 21:05:07 2000 +0000 ------------------------------------------------------------------------- -r137 | zarq | 2000-05-19 01:33:44 +0200 (vr, 19 mei 2000) | 2 lines + - Fixes a silly little insignificant buglet. -Don't distribute the file files. +commit 070ad08118a33755835b31174e2b04e84f75556e +Author: Guus Sliepen +Date: Tue Jun 27 20:55:12 2000 +0000 ------------------------------------------------------------------------- -r136 | zarq | 2000-05-19 01:28:51 +0200 (vr, 19 mei 2000) | 2 lines + - Purge old connections that are ADD_HOSTed. -Version 1.0pre2-0.3 +commit 4aeaea5e590fbd38aebbfacf2672304d04ba4ad1 +Author: Guus Sliepen +Date: Tue Jun 27 20:10:48 2000 +0000 ------------------------------------------------------------------------- -r135 | zarq | 2000-05-19 01:18:54 +0200 (vr, 19 mei 2000) | 2 lines + - Improved handling of errors on connection attempts. -Create a default /etc/tinc/nets.boot after installation, containing all directories under /etc/tinc by default. +commit 45a28b1e893d4da9d7977945a35ec6a8e4554830 +Author: Guus Sliepen +Date: Tue Jun 27 15:08:58 2000 +0000 ------------------------------------------------------------------------- -r134 | zarq | 2000-05-19 01:09:31 +0200 (vr, 19 mei 2000) | 2 lines + - Fixed indirectdata=no problem + - Added support for multiple ConnectTo lines in tinc.conf. -Read /etc/tinc/nets.boot to find the networks that have to be started. +commit 4faed1b8546563def6a426c563cec2a26d927eda +Author: Guus Sliepen +Date: Tue Jun 27 12:58:04 2000 +0000 ------------------------------------------------------------------------- -r133 | zarq | 2000-05-18 01:13:51 +0200 (do, 18 mei 2000) | 2 lines + - Fixed KEY_CHANGED notification. A lot of notify_others() calls were + wrong (first two arguments swapped). Should probably be doublechecked. + - Don't retry to connect to hosts with different protocol versions. -This file is generated with dpkg-buildpackage. +commit 04cb206298df033d254ca007205d13f9a670c402 +Author: Guus Sliepen +Date: Mon Jun 26 20:30:21 2000 +0000 ------------------------------------------------------------------------- -r132 | guus | 2000-05-16 18:07:15 +0200 (di, 16 mei 2000) | 5 lines + - Moved all connection messages to debug level 1, without -d's only the + startup message will be logged. + - Fixed DEL_HOST rebound. -TODO file reinstated: -- Append your name to items if you're working on them. -- Remove them if you fixed the problem/implemented that feature. -- Add any (suspected) bugs. +commit 783c8298610d5670f6e118f49bd3d1fdfa61ae1d +Author: Guus Sliepen +Date: Mon Jun 26 19:39:34 2000 +0000 ------------------------------------------------------------------------- -r131 | zarq | 2000-05-16 16:34:44 +0200 (di, 16 mei 2000) | 2 lines + - Indirectdata finally REALLY REALLY works now! + - More precise debug messages -Use the new VpnMask directive to add a route to the rest of the VPN. +commit b3681ebf6c255daf082ed254282cbf493af8fa93 +Author: Guus Sliepen +Date: Mon Jun 26 17:20:58 2000 +0000 ------------------------------------------------------------------------- -r130 | guus | 2000-05-16 15:09:15 +0200 (di, 16 mei 2000) | 2 lines + Fixes some hostlookups. Fixes indirectdata for real now (hopefully). -Stub for VpnMask config directive. +commit 03af6d8c8056d0b7006f7d8fb19bb33d303ac8f9 +Author: Ivo Timmermans +Date: Sun Jun 25 20:52:29 2000 +0000 ------------------------------------------------------------------------- -r129 | zarq | 2000-05-16 15:03:32 +0200 (di, 16 mei 2000) | 2 lines + Version 1.0pre3. -Look if the tap devices exist before bluntly remaking them. +commit a473ece8a0d83be5f7992888a6a3ff938dc4fb72 +Author: Guus Sliepen +Date: Sun Jun 25 16:39:17 2000 +0000 ------------------------------------------------------------------------- -r128 | zarq | 2000-05-16 09:56:05 +0200 (di, 16 mei 2000) | 2 lines + - More verbose connection list + - Added "myself" as hostname when logging indirect ADD_HOSTs -*** empty log message *** +commit f1f901112e44beaecd3037dae27407ea83edd86e +Author: Guus Sliepen +Date: Sun Jun 25 16:20:27 2000 +0000 ------------------------------------------------------------------------- -r127 | zarq | 2000-05-15 21:48:46 +0200 (ma, 15 mei 2000) | 2 lines + Hostlookup() is actually being called now. -Depend on perl5. +commit 54079bdf03e74c686f556f86082b9d14b5be227c +Author: Guus Sliepen +Date: Sun Jun 25 16:01:12 2000 +0000 ------------------------------------------------------------------------- -r126 | zarq | 2000-05-15 20:28:45 +0200 (ma, 15 mei 2000) | 2 lines + Hostnames are back! -Unlimited length in the config file, thanks to Cris van Pelt. +commit e4b586ed070908f866a450292f9759004e6affa8 +Author: Guus Sliepen +Date: Sun Jun 25 15:45:09 2000 +0000 ------------------------------------------------------------------------- -r125 | zarq | 2000-05-15 19:15:52 +0200 (ma, 15 mei 2000) | 2 lines + - Log possible spoofing attacks. + - Don't broadcast DEL_HOSTs for hosts that haven't been activated yet. + - If a host sends a TERMREQ, deactivate them. -Exit with zero status if is empty. +commit 9a1103a7be86de3da5548fd6446e6e4fe554cc08 +Author: Ivo Timmermans +Date: Sun Jun 25 15:42:40 2000 +0000 ------------------------------------------------------------------------- -r124 | zarq | 2000-05-15 17:54:37 +0200 (ma, 15 mei 2000) | 2 lines + Changed version number to 1.0pre3. -Updated to newer version. +commit d8d2b83350e890adae9c9cede6e21ea4169abe00 +Author: Ivo Timmermans +Date: Sun Jun 25 15:42:40 2000 +0000 ------------------------------------------------------------------------- -r123 | guus | 2000-05-15 11:41:34 +0200 (ma, 15 mei 2000) | 3 lines + Changed version number to 1.0pre3. -Test for existence of configured tinc networks. This will also make -first install of tinc possible without errors. +commit 7648bc606596851942dd6437ddaa93f53ab20f09 +Author: Guus Sliepen +Date: Sun Jun 25 15:22:16 2000 +0000 ------------------------------------------------------------------------- -r122 | zarq | 2000-05-15 01:03:37 +0200 (ma, 15 mei 2000) | 2 lines + Added CVS Id tags to header files. -.deb version number 1.0pre2-0.4. +commit 7f7e158aae8df5c65211bcfa82516e7c243cdd2e +Author: Guus Sliepen +Date: Sun Jun 25 15:16:12 2000 +0000 ------------------------------------------------------------------------- -r121 | zarq | 2000-05-15 01:00:44 +0200 (ma, 15 mei 2000) | 3 lines + Large cleanup: + - Removed hostname lookup (it blocks, and you can always do it yourself) + - Reorganized debug levels (after hints from Axel M�ller): + 0 Startup message and errors + 1 Connection logging + 2 Meta protocol information + 3 Verbose meta protocol (includes copy of transmitted requests) + 4 Packet information (logs transmission/errors of UDP packets) + 5 Verbose packet information (every single byte, not implemented yet + to protect ourselves from filling up /var/log directories) + - Made log messages more consistent -tincd->tinc -Delete libblowfish.y not be in the .deb. +commit 3c54a513b0c0a3acac60e03403ab4abfa0688c62 +Author: Guus Sliepen +Date: Sat Jun 24 12:35:42 2000 +0000 ------------------------------------------------------------------------- -r120 | zarq | 2000-05-15 00:59:47 +0200 (ma, 15 mei 2000) | 2 lines + If we have "indirectdata" flag set, we only send data to our uplink. -Mention both upstream authors. +commit d8e2f7104c3203edbf23d2349656c765a4310dee +Author: Guus Sliepen +Date: Fri Jun 23 19:27:03 2000 +0000 ------------------------------------------------------------------------- -r119 | zarq | 2000-05-15 00:59:19 +0200 (ma, 15 mei 2000) | 2 lines + First step for implementation of the "indirectdata" directive. This should + allow _leaf_ tincds to be behind firewalls. + The protocol has changed and is INCOMPATIBLE with previous versions. The + PROT_CURRENT value has been incremented. -Add description, better dependancies. +commit 33c3a25a66251606cbf20d3bd5b392d8837116e3 +Author: Ivo Timmermans +Date: Sat Jun 17 20:55:54 2000 +0000 ------------------------------------------------------------------------- -r118 | zarq | 2000-05-15 00:58:47 +0200 (ma, 15 mei 2000) | 2 lines + Configuration directive `IndirectData'. -Add initscript, tincd->tinc. +commit 1c8adb5e1f12894fc9a478fbf29678fb662e03ab +Author: Ivo Timmermans +Date: Sat Jun 17 20:30:44 2000 +0000 ------------------------------------------------------------------------- -r117 | zarq | 2000-05-14 23:18:10 +0200 (zo, 14 mei 2000) | 2 lines + Merge changes from 1.6-1.8. -Inserted useful content. +commit 0d167e1f5d8778674a9a77b2256050e3afe2896e +Author: Guus Sliepen +Date: Sat Jun 17 08:30:45 2000 +0000 ------------------------------------------------------------------------- -r116 | zarq | 2000-05-14 23:14:23 +0200 (zo, 14 mei 2000) | 2 lines + Added another semicolon for bash2 compliance (thanks to Jamie Briggs) -Add shlibs control file for the blowfish library. +commit 00f316810aa808368cdff620b1a1efdd1fcade20 +Author: Guus Sliepen +Date: Fri Jun 16 05:44:26 2000 +0000 ------------------------------------------------------------------------- -r115 | zarq | 2000-05-14 23:07:16 +0200 (zo, 14 mei 2000) | 2 lines + Applied patch from Jamie Briggs for bash2 conformance. -Give IP address instead of hex number when connecting tcp socket failed. +commit ef294a69678bc7cba6d2ee0be96f683249672222 +Author: Ivo Timmermans +Date: Tue Jun 6 10:24:33 2000 +0000 ------------------------------------------------------------------------- -r114 | zarq | 2000-05-14 23:04:53 +0200 (zo, 14 mei 2000) | 2 lines + Include ../intl in the include path, and add @INTLLIBS@ to the list of libraries. -Changed version to 1.0pre2. +commit 66e98068051bc52fa064650710260f89c09f8cfd +Author: Ivo Timmermans +Date: Sun Jun 4 12:14:31 2000 +0000 ------------------------------------------------------------------------- -r113 | zarq | 2000-05-14 22:58:34 +0200 (zo, 14 mei 2000) | 2 lines + These files are created by gettextize (run by autogen.sh) (should have known that). -Version 1.0pre1-0.1. +commit d1d4a524dee9d75b067ac8e25770557cf22f4afe +Author: Ivo Timmermans +Date: Sun Jun 4 11:50:46 2000 +0000 ------------------------------------------------------------------------- -r112 | zarq | 2000-05-14 22:56:41 +0200 (zo, 14 mei 2000) | 2 lines + Check for __gmpz_powm for libgmp3. -Add check for mpz_powm in libgmp3. +commit 377c4df245ceb8c19cabfe6d7a7c76841c07ba52 +Author: Ivo Timmermans +Date: Sat Jun 3 23:32:03 2000 +0000 ------------------------------------------------------------------------- -r111 | zarq | 2000-05-14 15:50:10 +0200 (zo, 14 mei 2000) | 2 lines + Don't touch VPNMASK if it's defined, otherwise use $MSK. -Only print an error with send_termreq if debug_lvl is 2 or more. +commit 9193aee8159ce53b349557ba1ad8ed23111042bb +Author: Guus Sliepen +Date: Sat Jun 3 08:27:16 2000 +0000 ------------------------------------------------------------------------- -r110 | guus | 2000-05-14 15:06:52 +0200 (zo, 14 mei 2000) | 2 lines + Removed items in TODO list that are already implemented. Only two items + left. -Fixed typos. +commit 5796d2f5b7310fa8841f76bbc7bbcf2385d960c3 +Author: Ivo Timmermans +Date: Fri Jun 2 17:30:33 2000 +0000 ------------------------------------------------------------------------- -r109 | guus | 2000-05-14 15:02:20 +0200 (zo, 14 mei 2000) | 6 lines + Alphabetized the list, added Lubom�r Bulej, removed Sander Smeenk and Tijs van Bakel, put merits after all names. -Changed ping behaviour (backwards compatible). If we don't have any data -to send, we don't need to check if the connection is still alive. -Furthermore, if we receive any kind of data from the other end, we know -it's alive, so we don't need to check it either. So, PING requests are -only sent if we send packets but there is no response. +commit 18b3084d2525c59f62b75346fa657ccce6459712 +Author: Guus Sliepen +Date: Thu Jun 1 20:21:27 2000 +0000 ------------------------------------------------------------------------- -r108 | guus | 2000-05-14 14:22:42 +0200 (zo, 14 mei 2000) | 2 lines + Debian init.d script automatically sets tap device's MTU to 1448 now. -Cleanups. +commit 77be52422d8c28735f787b1c233b4cec73d4db56 +Author: Ivo Timmermans +Date: Wed May 31 18:23:06 2000 +0000 ------------------------------------------------------------------------- -r107 | guus | 2000-05-14 13:39:18 +0200 (zo, 14 mei 2000) | 2 lines + Miscellaneous copyright updates. -Proxymode removed. +commit 8cb4bb619d777022a55255c5fa17a1a55a270ff3 +Author: Ivo Timmermans +Date: Wed May 31 18:21:27 2000 +0000 ------------------------------------------------------------------------- -r106 | zarq | 2000-05-13 02:54:27 +0200 (za, 13 mei 2000) | 2 lines + Handle locale settings. -Perl version of the system startup script. +commit f20df109a638ac3a86efa70fac39e1dae8e87208 +Author: Ivo Timmermans +Date: Wed May 31 18:19:33 2000 +0000 ------------------------------------------------------------------------- -r105 | zarq | 2000-05-12 15:31:00 +0200 (vr, 12 mei 2000) | 2 lines + Version 1.0pre2-1. -Deleted the protocol description. +commit 4ae74c50b7faadf31086bc61af0f8158a465e521 +Author: Ivo Timmermans +Date: Wed May 31 18:18:21 2000 +0000 ------------------------------------------------------------------------- -r104 | guus | 2000-05-08 20:44:15 +0200 (ma, 08 mei 2000) | 4 lines + Updated Dutch translation. -Added new config variable "ProxyMode". If enabled, all outgoing packets -are sent to the uplink (ConnectTo), which will have to forward them for -us (kernel should do that). This is for people behind firewalls. +commit 7037286586151e28b7c5f1fe09dd6c5faca18cdc +Author: Ivo Timmermans +Date: Wed May 31 18:17:45 2000 +0000 ------------------------------------------------------------------------- -r103 | zarq | 2000-05-05 12:48:54 +0200 (vr, 05 mei 2000) | 2 lines + Tell about /etc/tinc/nets.boot. -Added semicolons required by bash2 (Mads Kiilerich). +commit 65a9eedb05387b8cf77dbbbc56347b44a28de624 +Author: Ivo Timmermans +Date: Wed May 31 18:17:27 2000 +0000 ------------------------------------------------------------------------- -r102 | zarq | 2000-05-05 01:26:24 +0200 (vr, 05 mei 2000) | 2 lines + Include news for 1.0pre2. -Copied most of the code from the redhat script. +commit 17fa07510ad74d0f96f9700538d32eb8e7b2a0ce +Author: Ivo Timmermans +Date: Tue May 30 21:36:16 2000 +0000 ------------------------------------------------------------------------- -r101 | zarq | 2000-05-05 01:17:02 +0200 (vr, 05 mei 2000) | 2 lines + Only accept an ADD_HOST request for a host that already exists in our conn_list if the nexthop field matches the sender. This is a workaround for older clients. -Include sys/types.h. +commit e7f22d2f5f0a5fcd52da7512ab734b0ba52c623f +Author: Ivo Timmermans +Date: Tue May 30 12:38:15 2000 +0000 ------------------------------------------------------------------------- -r100 | zarq | 2000-05-05 01:16:43 +0200 (vr, 05 mei 2000) | 2 lines + In terminate_connection, only send a notification to hosts that are directly connected to us. (DEL_HOST gets forwarded automatically.) -Don't link in libdl. +commit 2fdda8e4fa6c6ace5f7e9421f0644a3ffec388c9 +Author: Ivo Timmermans +Date: Tue May 30 12:31:41 2000 +0000 ------------------------------------------------------------------------- -r99 | zarq | 2000-05-04 02:01:05 +0200 (do, 04 mei 2000) | 2 lines + When a connection is terminated, all hosts that are still connected get notified of the lost connections. -Check for the existance of libdl. +commit f826301889e1fa1a22770919f0385c3ca04c740a +Author: Ivo Timmermans +Date: Tue May 30 11:18:12 2000 +0000 ------------------------------------------------------------------------- -r98 | zarq | 2000-05-04 02:00:50 +0200 (do, 04 mei 2000) | 2 lines + Added new configuration directive `Hostnames', which controls the resolving of IP addresses to hostnames. -More for getopt support. +commit a7ad161d2b115b6a2a69c5dc8ddd33008d3562d0 +Author: Guus Sliepen +Date: Mon May 29 23:40:05 2000 +0000 ------------------------------------------------------------------------- -r97 | zarq | 2000-05-04 02:00:06 +0200 (do, 04 mei 2000) | 2 lines + Only activate a connection upon receiving it's public key if it's an + incoming connection. When it's outgoing, we need to receive an ack first. -Include stdio.h for fprintf. +commit 5654e156a31d05ac3026790f7749d0401b2eaabc +Author: Ivo Timmermans +Date: Mon May 29 22:27:15 2000 +0000 ------------------------------------------------------------------------- -r96 | zarq | 2000-05-04 01:47:06 +0200 (do, 04 mei 2000) | 2 lines + Updated changes list for version 1.0pre2. -getopt_long() support for platforms that don't have it. +commit a822c7466aa91a819c498336f91c63d224c3af11 +Author: Ivo Timmermans +Date: Mon May 29 22:20:04 2000 +0000 ------------------------------------------------------------------------- -r95 | zarq | 2000-05-04 01:00:38 +0200 (do, 04 mei 2000) | 2 lines + Bounds check for request id (between 0 and 255). -Don't use error.h or error(), put #error in front of cpp errors. +commit 0f2cf48d304e20abb9b3cded2aaa693828c9d412 +Author: Ivo Timmermans +Date: Mon May 29 22:15:38 2000 +0000 ------------------------------------------------------------------------- -r94 | guus | 2000-05-03 20:02:15 +0200 (wo, 03 mei 2000) | 2 lines + Dutch translation of tinc. -Squashed gcc warning. +commit 386a62ff57f283b415fd757a8c4645b24c3bd3bb +Author: Ivo Timmermans +Date: Mon May 29 21:40:51 2000 +0000 ------------------------------------------------------------------------- -r93 | guus | 2000-05-03 19:59:07 +0200 (wo, 03 mei 2000) | 2 lines + Define LOCALEDIR in CFLAGS. -Fixes typo and UDP network byte order. +commit 4cd009f774e4c50cdacc06d351cac19ca3247b6b +Author: Ivo Timmermans +Date: Mon May 29 21:40:20 2000 +0000 ------------------------------------------------------------------------- -r92 | guus | 2000-05-03 17:37:32 +0200 (wo, 03 mei 2000) | 2 lines + Include GNU gettext checks. -Outgoing packets now use network byte order in header. +commit 5814939c9d0e801bdbed6c96092fd90b6dcd859c +Author: Ivo Timmermans +Date: Mon May 29 21:38:02 2000 +0000 ------------------------------------------------------------------------- -r91 | zarq | 2000-05-03 17:01:54 +0200 (wo, 03 mei 2000) | 2 lines + Update acconfig.h to include values for gettext inclusion. -Fix a typo, better handling of the info document. (from Mads Kiilerich) +commit b200b0d812763563dbe09e5da116c55e45f89e4f +Author: Ivo Timmermans +Date: Mon May 29 21:36:28 2000 +0000 ------------------------------------------------------------------------- -r90 | guus | 2000-05-02 12:16:50 +0200 (di, 02 mei 2000) | 3 lines + Include system.h and ABOUT-NLS. -Replaced sprintf() by safer snprintf(), removed possible buffer overflow -by one byte. +commit b9ea0633c7243de552d581f4486902c67aefd695 +Author: Ivo Timmermans +Date: Mon May 29 21:04:55 2000 +0000 ------------------------------------------------------------------------- -r89 | guus | 2000-05-02 11:55:34 +0200 (di, 02 mei 2000) | 2 lines + Include intl/ directory in the list of subdirs. -Previous fix fixed. Meta protocol should be really flawless from now on! +commit 9fd02ffcb0cacf3de26e876de5f30510bff137a3 +Author: Ivo Timmermans +Date: Mon May 29 21:01:26 2000 +0000 ------------------------------------------------------------------------- -r88 | guus | 2000-05-02 11:10:33 +0200 (di, 02 mei 2000) | 2 lines + Internationalization of tinc. -Fixed small mistake that would prevent forwarding requests. +commit 61e71ab74ad9b5edb044b84ccf1111a33eb468cb +Author: Guus Sliepen +Date: Sat May 27 20:23:01 2000 +0000 ------------------------------------------------------------------------- -r87 | zarq | 2000-05-02 00:00:02 +0200 (di, 02 mei 2000) | 2 lines + Terminate a connection on any error. Furthermore, disallow del_host, + add_host and other important requests until remote host has properly + authenticated itself. -Mentioned new metaprotocol. +commit cc01b18bc6d0bfb12e6770fc0a007c278f355d9e +Author: Guus Sliepen +Date: Sat May 27 19:44:04 2000 +0000 ------------------------------------------------------------------------- -r86 | zarq | 2000-05-01 23:47:12 +0200 (ma, 01 mei 2000) | 2 lines + Made tinc persistent. If no outgoing connection can be established right + after the start of the daemon, it won't quit anymore but will retry in 5 + minutes. Also, 5 minutes is now the maximum time to wait for a retry. -More tincd->tinc updates. +commit 028659bfbf164cb7a72831506896e291010b251f +Author: Guus Sliepen +Date: Sat May 27 19:23:20 2000 +0000 ------------------------------------------------------------------------- -r85 | zarq | 2000-05-01 23:31:59 +0200 (ma, 01 mei 2000) | 2 lines + Fixed typos. When terminating a connection, it's status is not only set to + remove=1 but also active=0. -Fixed meta protocol. +commit e4ff969a9868ecc25a85daab620f97227de8d493 +Author: Guus Sliepen +Date: Sat May 27 19:04:12 2000 +0000 ------------------------------------------------------------------------- -r84 | zarq | 2000-05-01 23:31:17 +0200 (ma, 01 mei 2000) | 2 lines + Fix for a DoS attack: + A remote user could telnet to the tinc daemon and type only this line: + 61 6 00000000/00000000:28f + This would deny any packets to be sent to other tinc networks (except + for to the hosts that run tincd's themselves). Solution is to skip + hosts in lookup_conn() that have not been activated yet. + Fixed potential conn_list table corruption: + If a new connection is accepted but a connection with the same subnet + would already exist in the connection list, the OLD connection is + terminated. -Committed by Mads Kiilerich. +commit 4d71de15e8abd137702a5dc04a743d246c3f1110 +Author: Guus Sliepen +Date: Sat May 27 13:21:20 2000 +0000 ------------------------------------------------------------------------- -r83 | zarq | 2000-05-01 21:17:09 +0200 (ma, 01 mei 2000) | 2 lines + Documentation updates. Removed all references to configuration variable + "AllowConnect", since it is NOT used in tinc. Added information about + "VpnMask". Elaborated a bit about "private" and "virtual" networks. -Updates by Mads Kiilerich. +commit 85e3c1f2716c622ca8cada83d833703bf8a3ecc6 +Author: Ivo Timmermans +Date: Fri May 26 11:25:59 2000 +0000 ------------------------------------------------------------------------- -r82 | guus | 2000-05-01 20:07:12 +0200 (ma, 01 mei 2000) | 6 lines + Updated by Lubomir Bulej and Mads Kiilerich: it uses /etc/tinc/nets.boot and the VpnMask directive in the config files. -Meta protocol overhaul. Tinc is now incompatible with previous versions, -furthermore this version does NOT work yet because of a problem with -sending keys (these should be converted to base36 or something like that). -It is possible to telnet to the tinc daemon now and type some commands -by hand though :). +commit 3a6ffe6895b681377a9553c01e3777f499b90d4a +Author: Ivo Timmermans +Date: Sun May 21 23:01:28 2000 +0000 ------------------------------------------------------------------------- -r81 | zarq | 2000-05-01 18:28:28 +0200 (ma, 01 mei 2000) | 2 lines + Create an empty /etc/tinc/nets.boot. -Committed by Lubom�r Bulej. +commit b9a86ec70ed4ffe5009c4979454f0d99c8559b45 +Author: Ivo Timmermans +Date: Sun May 21 22:40:41 2000 +0000 ------------------------------------------------------------------------- -r80 | zarq | 2000-04-30 22:48:48 +0200 (zo, 30 apr 2000) | 2 lines + Use /etc/tinc/example as a base directory for an example. /etc/tinc/example/README points to /usr/share/doc/tinc/README.Debian. -Key forwarding, write one byte extra. +commit 63847abdfdad03a69bfd967929336e113cdeb09e +Author: Ivo Timmermans +Date: Sun May 21 22:38:01 2000 +0000 ------------------------------------------------------------------------- -r79 | zarq | 2000-04-30 21:49:49 +0200 (zo, 30 apr 2000) | 2 lines + Add an example of using VpnMask. -Protocol fix (ANS_KEY). This breaks 0.3.3 protocol compatibility. +commit 2469acc0900edeb8f1e3263fbf58bf74639c1b12 +Author: Ivo Timmermans +Date: Sun May 21 22:27:31 2000 +0000 ------------------------------------------------------------------------- -r78 | zarq | 2000-04-30 21:03:00 +0200 (zo, 30 apr 2000) | 2 lines + When VpnMask is not present in the config file, silently use $MSK as vpnmask. -Send one less byte from an ANS_KEY request. +commit 73b3e7ce03cacb644a8101610933b221fdf432d6 +Author: Guus Sliepen +Date: Sun May 21 22:21:38 2000 +0000 ------------------------------------------------------------------------- -r77 | zarq | 2000-04-30 20:57:16 +0200 (zo, 30 apr 2000) | 2 lines + Fixed last typo. Init.d now uses ifconfig command to set both the tap's IP + address as well as the correct route. Furthermore, if no VpnMask is given, + a default of 255.255.0.0 is chosen and a warning issued. -Read one less byte from an ANS_KEY request. +commit 2ad4f1cc5b6013be2deee82b0cb3f731adb51616 +Author: Guus Sliepen +Date: Sun May 21 22:08:21 2000 +0000 ------------------------------------------------------------------------- -r76 | zarq | 2000-04-30 18:34:31 +0200 (zo, 30 apr 2000) | 2 lines + Typo. -Removed debug messages. +commit e25fc3a3dc4bc407bd0645fb9891ac127a83f468 +Author: Guus Sliepen +Date: Sun May 21 22:04:56 2000 +0000 ------------------------------------------------------------------------- -r75 | zarq | 2000-04-30 18:31:23 +0200 (zo, 30 apr 2000) | 2 lines + VpnMask truely works now. -Read public keys the right way (tm). +commit 9ec4decec17f95cc7d5be66cc18bb040cce84d47 +Author: Ivo Timmermans +Date: Fri May 19 01:17:32 2000 +0000 ------------------------------------------------------------------------- -r74 | zarq | 2000-04-30 18:11:05 +0200 (zo, 30 apr 2000) | 2 lines + Mask the vpn net with the vpn netmask, route would give an error if the netmask didn't match the net. -New way of handling the meta protocol. +commit 20e404ab5716b06b53a4a5443f8098f227770907 +Author: Ivo Timmermans +Date: Fri May 19 00:58:01 2000 +0000 ------------------------------------------------------------------------- -r73 | zarq | 2000-04-30 15:23:53 +0200 (zo, 30 apr 2000) | 2 lines + Fixed typo. -Replaced check for status.active by status.dataopen in check_network_activity. +commit 44af1094be90878bd6fc09c40882cf2463046908 +Author: Ivo Timmermans +Date: Fri May 19 00:33:44 2000 +0000 ------------------------------------------------------------------------- -r72 | zarq | 2000-04-30 03:16:51 +0200 (zo, 30 apr 2000) | 2 lines + Updated copyright notice. -Initially, the vpn_mask of a connection is 255.255.255.255 to avoid confusion with lookup_conn. +commit 01352f4c525862f05988ed8687f26210c5ba10a2 +Author: Ivo Timmermans +Date: Fri May 19 00:15:37 2000 +0000 ------------------------------------------------------------------------- -r71 | zarq | 2000-04-30 03:15:47 +0200 (zo, 30 apr 2000) | 2 lines + Errors will not terminate the script or result in a nonzero exit code. -Got rid of the nasty hacks... and replaced it by another one. +commit 4ef2a8cfdb13c7eb2d811fc8c9f04df8970293c5 +Author: Ivo Timmermans +Date: Fri May 19 00:14:34 2000 +0000 ------------------------------------------------------------------------- -r70 | zarq | 2000-04-29 22:39:36 +0200 (za, 29 apr 2000) | 2 lines + Include postinst in the distribution. -Filled up the protocol structs with unused bytes. +commit 59ca017df4c9d0f7861693b4d2ec4b7dc8c98b1e +Author: Ivo Timmermans +Date: Fri May 19 00:09:20 2000 +0000 ------------------------------------------------------------------------- -r69 | zarq | 2000-04-29 22:38:23 +0200 (za, 29 apr 2000) | 2 lines + Find networks in instead of . -Added `deb' target. +commit 0354962c9885f04801d8469214c172cc012cdcec +Author: Ivo Timmermans +Date: Thu May 18 23:33:44 2000 +0000 ------------------------------------------------------------------------- -r68 | zarq | 2000-04-29 15:56:06 +0200 (za, 29 apr 2000) | 2 lines + Don't distribute the file files. -More updates wrt. the change from tincd->tinc. +commit b56705e18ceec9234578d7ac12939f7c59cff066 +Author: Ivo Timmermans +Date: Thu May 18 23:28:51 2000 +0000 ------------------------------------------------------------------------- -r67 | guus | 2000-04-28 13:33:25 +0200 (vr, 28 apr 2000) | 2 lines + Version 1.0pre2-0.3 -Oops! Reference to write_n() removed and changed into neat write() call. +commit cbf6efb617f45ffc608fe5f61d09abdd85f444ad +Author: Ivo Timmermans +Date: Thu May 18 23:18:54 2000 +0000 ------------------------------------------------------------------------- -r66 | guus | 2000-04-27 22:57:18 +0200 (do, 27 apr 2000) | 2 lines + Create a default /etc/tinc/nets.boot after installation, containing all directories under /etc/tinc by default. -Removed write_n() function. +commit e7d583adfaa50370d20f4cfe88ba5b6da399911d +Author: Ivo Timmermans +Date: Thu May 18 23:09:31 2000 +0000 ------------------------------------------------------------------------- -r65 | zarq | 2000-04-27 15:47:51 +0200 (do, 27 apr 2000) | 2 lines + Read /etc/tinc/nets.boot to find the networks that have to be started. -Default config file name is tinc.conf, and pidfile is tinc.pid. +commit 8d4ab991b8c35382c9cd46dd65af873d9d08f63f +Author: Ivo Timmermans +Date: Wed May 17 23:13:51 2000 +0000 ------------------------------------------------------------------------- -r64 | zarq | 2000-04-27 02:07:17 +0200 (do, 27 apr 2000) | 2 lines + This file is generated with dpkg-buildpackage. -Updated version number to 1.0. +commit ffc79bcd20b2b8085c906a446318817808bc36ae +Author: Guus Sliepen +Date: Tue May 16 16:07:15 2000 +0000 ------------------------------------------------------------------------- -r63 | zarq | 2000-04-27 02:01:00 +0200 (do, 27 apr 2000) | 2 lines + TODO file reinstated: + - Append your name to items if you're working on them. + - Remove them if you fixed the problem/implemented that feature. + - Add any (suspected) bugs. -Filled in the details, license from libblowfish copied. +commit cdab82d6fb7d7d32194cb2162a814fbc89b7db4c +Author: Ivo Timmermans +Date: Tue May 16 14:34:44 2000 +0000 ------------------------------------------------------------------------- -r62 | zarq | 2000-04-27 01:56:22 +0200 (do, 27 apr 2000) | 3 lines + Use the new VpnMask directive to add a route to the rest of the VPN. -Version to 1.0pre1; -Create Makefile and build in debian/. +commit 85963f4c857abc2d9a4c5a3245cc11257140b9a6 +Author: Guus Sliepen +Date: Tue May 16 13:09:15 2000 +0000 ------------------------------------------------------------------------- -r61 | zarq | 2000-04-27 01:23:01 +0200 (do, 27 apr 2000) | 2 lines + Stub for VpnMask config directive. -Omit TODO. +commit 30aff5ea2aebcfc0e97e60e73ed3edc2363634a0 +Author: Ivo Timmermans +Date: Tue May 16 13:03:32 2000 +0000 ------------------------------------------------------------------------- -r60 | zarq | 2000-04-27 00:42:15 +0200 (do, 27 apr 2000) | 2 lines + Look if the tap devices exist before bluntly remaking them. -Add an entry to dir. +commit 0761eed64c4d6d2b8e9fa6a335ccdca8ea4b95db +Author: Ivo Timmermans +Date: Tue May 16 07:56:05 2000 +0000 ------------------------------------------------------------------------- -r59 | zarq | 2000-04-27 00:01:01 +0200 (do, 27 apr 2000) | 2 lines + *** empty log message *** -The make command is in /usr/bin. +commit 0a2e2b0c8d20baf22b550f735b1fe63b0a1d377a +Author: Ivo Timmermans +Date: Mon May 15 19:48:46 2000 +0000 ------------------------------------------------------------------------- -r58 | guus | 2000-04-26 19:42:55 +0200 (wo, 26 apr 2000) | 4 lines + Depend on perl5. -Cleanups: -- Changed recv/send calls into read/write calls for streams -- Made all sizeof() functions use a variable name instead of type +commit 7e817fcf0fdd25aae58259930006c61048b017cd +Author: Ivo Timmermans +Date: Mon May 15 18:28:45 2000 +0000 ------------------------------------------------------------------------- -r57 | zarq | 2000-04-26 16:54:43 +0200 (wo, 26 apr 2000) | 2 lines + Unlimited length in the config file, thanks to Cris van Pelt. -From Mads Kiilerich. +commit b18af982af810ff4c050891ad2026960c43620a0 +Author: Ivo Timmermans +Date: Mon May 15 17:15:52 2000 +0000 ------------------------------------------------------------------------- -r56 | guus | 2000-04-26 00:15:28 +0200 (wo, 26 apr 2000) | 2 lines + Exit with zero status if is empty. -Converted every &variable[0] to variable. +commit 4711a87922c84241e9bb312755d7b943ea8ae4b6 +Author: Ivo Timmermans +Date: Mon May 15 15:54:37 2000 +0000 ------------------------------------------------------------------------- -r55 | zarq | 2000-04-26 00:00:49 +0200 (wo, 26 apr 2000) | 2 lines + Updated to newer version. -Debug level tweaking. +commit a0c4e7fe6d46988f3fb1100ef00db7b747c86f72 +Author: Guus Sliepen +Date: Mon May 15 09:41:34 2000 +0000 ------------------------------------------------------------------------- -r54 | guus | 2000-04-25 22:50:59 +0200 (di, 25 apr 2000) | 4 lines + Test for existence of configured tinc networks. This will also make + first install of tinc possible without errors. -When trying to talk to a host that is in the netmask of a tinc server but -not the tinc server itself, and no keys have been exchanged yet, the key -request would be directed to the host instead of the server. Fixed. +commit 265bda08cd00feebb68243d4079854916b03638e +Author: Ivo Timmermans +Date: Sun May 14 23:03:37 2000 +0000 ------------------------------------------------------------------------- -r53 | zarq | 2000-04-25 22:42:54 +0200 (di, 25 apr 2000) | 2 lines + .deb version number 1.0pre2-0.4. -*** empty log message *** +commit 7a450d704b5a242f8bf9129af60593c90c63df5a +Author: Ivo Timmermans +Date: Sun May 14 23:00:44 2000 +0000 ------------------------------------------------------------------------- -r52 | guus | 2000-04-25 22:17:44 +0200 (di, 25 apr 2000) | 2 lines + tincd->tinc + Delete libblowfish.y not be in the .deb. -Fixed typo and removed some unnecessary variables. +commit 7fbfa990fcd38b8241281ce6f1a4e2992239986f +Author: Ivo Timmermans +Date: Sun May 14 22:59:47 2000 +0000 ------------------------------------------------------------------------- -r51 | guus | 2000-04-25 22:10:37 +0200 (di, 25 apr 2000) | 2 lines + Mention both upstream authors. -Packet queues fixed. They caused the trouble when resending keys. +commit f7b04ea142623a43413f74e19b1b6a9a247647ff +Author: Ivo Timmermans +Date: Sun May 14 22:59:19 2000 +0000 ------------------------------------------------------------------------- -r50 | zarq | 2000-04-25 21:23:23 +0200 (di, 25 apr 2000) | 2 lines + Add description, better dependancies. -Create a ChangeLog file, automake requires it. +commit 9f07fe55dc4930920b9a5909d7057ca7bc16bad9 +Author: Ivo Timmermans +Date: Sun May 14 22:58:47 2000 +0000 ------------------------------------------------------------------------- -r49 | zarq | 2000-04-25 21:21:19 +0200 (di, 25 apr 2000) | 2 lines + Add initscript, tincd->tinc. -*** empty log message *** +commit df10baa50c3b421b03ac9eeaed4a4a19a47f611e +Author: Ivo Timmermans +Date: Sun May 14 21:18:10 2000 +0000 ------------------------------------------------------------------------- -r48 | zarq | 2000-04-25 21:11:02 +0200 (di, 25 apr 2000) | 2 lines + Inserted useful content. -Initial CVS. +commit 6c722da77cc9185e48e22818ef88f2a88cf2efc7 +Author: Ivo Timmermans +Date: Sun May 14 21:14:23 2000 +0000 ------------------------------------------------------------------------- -r47 | guus | 2000-04-25 20:57:23 +0200 (di, 25 apr 2000) | 2 lines + Add shlibs control file for the blowfish library. -Added checkpoints to beginning and ending of every function. +commit 803f908078e87f433727a3ddf2d61734e1ed9233 +Author: Ivo Timmermans +Date: Sun May 14 21:07:16 2000 +0000 ------------------------------------------------------------------------- -r46 | zarq | 2000-04-25 19:38:54 +0200 (di, 25 apr 2000) | 2 lines + Give IP address instead of hex number when connecting tcp socket failed. -Remove ChangeLog with a `make cvs-clean'. +commit 4b1a1c2123626b50bd1a5382867986260440e9e7 +Author: Ivo Timmermans +Date: Sun May 14 21:04:53 2000 +0000 ------------------------------------------------------------------------- -r45 | zarq | 2000-04-25 19:35:45 +0200 (di, 25 apr 2000) | 2 lines + Changed version to 1.0pre2. -Don't include TODO in the dist. +commit ca900d388b996c629f0c87c7a62efb52bd219065 +Author: Ivo Timmermans +Date: Sun May 14 20:58:34 2000 +0000 ------------------------------------------------------------------------- -r44 | zarq | 2000-04-25 17:08:10 +0200 (di, 25 apr 2000) | 2 lines + Version 1.0pre1-0.1. -Propagate CFLAGS from configure to gcc. +commit 7d433ebd7610e0ff7e7b4c59979c446c0a1dfd03 +Author: Ivo Timmermans +Date: Sun May 14 20:56:41 2000 +0000 ------------------------------------------------------------------------- -r43 | zarq | 2000-04-25 17:07:21 +0200 (di, 25 apr 2000) | 2 lines + Add check for mpz_powm in libgmp3. -Delete all the files that are created by autogen.sh on a `make cvs-clean'. +commit de09916eadd4c558937d1a6367f5319ca26ed07c +Author: Ivo Timmermans +Date: Sun May 14 13:50:10 2000 +0000 ------------------------------------------------------------------------- -r42 | zarq | 2000-04-25 12:40:08 +0200 (di, 25 apr 2000) | 2 lines + Only print an error with send_termreq if debug_lvl is 2 or more. -Spelling fixes. +commit 9d023b1f2e7750f4a0e506c0f61498a44c0b95a8 +Author: Guus Sliepen +Date: Sun May 14 13:06:52 2000 +0000 ------------------------------------------------------------------------- -r41 | zarq | 2000-04-25 12:27:44 +0200 (di, 25 apr 2000) | 2 lines + Fixed typos. -Contributed by Mads Kiilerich. +commit e20e143f1e99bdc0a7d92e97da1bd0dc40e8a83b +Author: Guus Sliepen +Date: Sun May 14 13:02:20 2000 +0000 ------------------------------------------------------------------------- -r40 | zarq | 2000-04-25 12:22:26 +0200 (di, 25 apr 2000) | 2 lines + Changed ping behaviour (backwards compatible). If we don't have any data + to send, we don't need to check if the connection is still alive. + Furthermore, if we receive any kind of data from the other end, we know + it's alive, so we don't need to check it either. So, PING requests are + only sent if we send packets but there is no response. -Generate this Makefile.am from Makefile.am.in. +commit ee96ccabbbf0180d5631d3c22838456f28ee9c15 +Author: Guus Sliepen +Date: Sun May 14 12:22:42 2000 +0000 ------------------------------------------------------------------------- -r39 | zarq | 2000-04-25 11:43:50 +0200 (di, 25 apr 2000) | 2 lines + Cleanups. -*** empty log message *** +commit 8caa1b9d750bb7467d1c3330780b05ac2bbf9883 +Author: Guus Sliepen +Date: Sun May 14 11:39:18 2000 +0000 ------------------------------------------------------------------------- -r38 | zarq | 2000-04-25 11:42:52 +0200 (di, 25 apr 2000) | 2 lines + Proxymode removed. -Added Mads Kiilerich, removed Guus Sliepen. +commit 269067bb22e8f80deb43d3ac903f4e0d67af63d2 +Author: Ivo Timmermans +Date: Sat May 13 00:54:27 2000 +0000 ------------------------------------------------------------------------- -r37 | zarq | 2000-04-25 03:45:34 +0200 (di, 25 apr 2000) | 3 lines + Perl version of the system startup script. -Changes largely from Mads Kiilerich. -Removed section about encryption. +commit 12adf1af548b7d2f2baa4be16d2df956048b7855 +Author: Ivo Timmermans +Date: Fri May 12 13:31:00 2000 +0000 ------------------------------------------------------------------------- -r36 | zarq | 2000-04-25 03:26:35 +0200 (di, 25 apr 2000) | 2 lines + Deleted the protocol description. -Remove test for GNOME. +commit d0ba34ccae02d07051bc3f7012a6c116cfb3b653 +Author: Guus Sliepen +Date: Mon May 8 18:44:15 2000 +0000 ------------------------------------------------------------------------- -r35 | zarq | 2000-04-25 03:25:18 +0200 (di, 25 apr 2000) | 2 lines + Added new config variable "ProxyMode". If enabled, all outgoing packets + are sent to the uplink (ConnectTo), which will have to forward them for + us (kernel should do that). This is for people behind firewalls. -Use `make ChangeLog' to create this file from the CVS logs. +commit 92387475ace9b06af39987c71ac563cf29427009 +Author: Ivo Timmermans +Date: Fri May 5 10:48:54 2000 +0000 ------------------------------------------------------------------------- -r34 | zarq | 2000-04-25 03:23:31 +0200 (di, 25 apr 2000) | 2 lines + Added semicolons required by bash2 (Mads Kiilerich). -Don't define HAVE_NAMESPACES and HAVE_STL. +commit bce2179fe350bf34cde0caab97f72c0930539840 +Author: Ivo Timmermans +Date: Thu May 4 23:26:24 2000 +0000 ------------------------------------------------------------------------- -r33 | zarq | 2000-04-25 03:22:01 +0200 (di, 25 apr 2000) | 2 lines + Copied most of the code from the redhat script. -Remove check for bigendianness. +commit 74b0cbecce5194dc5c594cc4e2aa3e97c14ea6c1 +Author: Ivo Timmermans +Date: Thu May 4 23:17:02 2000 +0000 ------------------------------------------------------------------------- -r32 | zarq | 2000-04-25 03:15:28 +0200 (di, 25 apr 2000) | 2 lines + Include sys/types.h. -This file is obsolete, most of the ideas are already in echelon. +commit 2f7e532d703bbf6997ae04658379df0b0d844f62 +Author: Ivo Timmermans +Date: Thu May 4 23:16:43 2000 +0000 ------------------------------------------------------------------------- -r31 | zarq | 2000-04-25 03:10:38 +0200 (di, 25 apr 2000) | 2 lines + Don't link in libdl. -s/Gnome/tinc/g +commit d4ef7ea0e79ee0d2b7063893f7af5ece886d838b +Author: Ivo Timmermans +Date: Thu May 4 00:01:05 2000 +0000 ------------------------------------------------------------------------- -r30 | zarq | 2000-04-25 02:50:48 +0200 (di, 25 apr 2000) | 3 lines + Check for the existance of libdl. -The shell script autogen.sh can create all these removed files, but be -sure to have autoconf, automake, libtool and more installed. +commit 87ccd613cab1947878ef60e3c927f717df089233 +Author: Ivo Timmermans +Date: Thu May 4 00:00:50 2000 +0000 ------------------------------------------------------------------------- -r29 | zarq | 2000-04-25 02:11:33 +0200 (di, 25 apr 2000) | 2 lines + More for getopt support. -Don't try to create cipher/idea/Makefile. +commit 6182664859383a86a47846cafdc1f6fcd73b5a76 +Author: Ivo Timmermans +Date: Thu May 4 00:00:06 2000 +0000 ------------------------------------------------------------------------- -r28 | zarq | 2000-04-24 23:12:32 +0200 (ma, 24 apr 2000) | 2 lines + Include stdio.h for fprintf. -Don't include idea/idea.h. +commit 88a8826cf72297a784d597ba5a2b47058e1faf72 +Author: Ivo Timmermans +Date: Wed May 3 23:47:06 2000 +0000 ------------------------------------------------------------------------- -r27 | zarq | 2000-04-24 23:10:33 +0200 (ma, 24 apr 2000) | 2 lines + getopt_long() support for platforms that don't have it. -Don't compile in `idea'. +commit 3d218a31145cf6a4c625ed287cdf3f99e4fd9a03 +Author: Ivo Timmermans +Date: Wed May 3 23:00:38 2000 +0000 ------------------------------------------------------------------------- -r26 | zarq | 2000-04-24 22:57:22 +0200 (ma, 24 apr 2000) | 2 lines + Don't use error.h or error(), put #error in front of cpp errors. -These files are not needed in release 1.0. +commit a083b1cf305f3d241f2f4b36968a5b1ed9117612 +Author: Guus Sliepen +Date: Wed May 3 18:02:15 2000 +0000 ------------------------------------------------------------------------- -r25 | guus | 2000-04-24 11:39:50 +0200 (ma, 24 apr 2000) | 3 lines + Squashed gcc warning. -Bug found! Wrong pointer was used for handling multiple ADD_HOST requests -at once. (See line 606.) +commit 78532475238b23eb52ac88d905fbf966d97a79d2 +Author: Guus Sliepen +Date: Wed May 3 17:59:07 2000 +0000 ------------------------------------------------------------------------- -r24 | guus | 2000-04-24 10:32:57 +0200 (ma, 24 apr 2000) | 3 lines + Fixes typo and UDP network byte order. -Added extra checks for desynchronized connection lists. Hopefully this will -fix those strange segmentation faults. +commit 505b5ec2cd9d6cf3dc655284a8c4041ce8527a07 +Author: Guus Sliepen +Date: Wed May 3 15:37:32 2000 +0000 ------------------------------------------------------------------------- -r23 | zarq | 2000-04-21 00:50:48 +0200 (vr, 21 apr 2000) | 2 lines + Outgoing packets now use network byte order in header. -Added cvs-clean. +commit 2bc7a0c92831802eec167ad193515962a63690dd +Author: Ivo Timmermans +Date: Wed May 3 15:01:54 2000 +0000 ------------------------------------------------------------------------- -r22 | zarq | 2000-04-20 21:14:09 +0200 (do, 20 apr 2000) | 2 lines + Fix a typo, better handling of the info document. (from Mads Kiilerich) -Keep make dist(dir) happy. +commit 89610e3fbada1dee79769b8146a500c8357fd81d +Author: Guus Sliepen +Date: Tue May 2 10:16:50 2000 +0000 ------------------------------------------------------------------------- -r21 | zarq | 2000-04-18 22:44:29 +0200 (di, 18 apr 2000) | 2 lines + Replaced sprintf() by safer snprintf(), removed possible buffer overflow + by one byte. -A short notice from Mads Kiilerich. +commit aeccaca829842910b4a5c8a5fa61e1738492bea6 +Author: Guus Sliepen +Date: Tue May 2 09:55:34 2000 +0000 ------------------------------------------------------------------------- -r20 | zarq | 2000-04-18 22:43:24 +0200 (di, 18 apr 2000) | 2 lines + Previous fix fixed. Meta protocol should be really flawless from now on! -Submitted changes by Mads Kiilerich. +commit 989d7edc07fd407e7f7838b45986f4e37359ef97 +Author: Guus Sliepen +Date: Tue May 2 09:10:33 2000 +0000 ------------------------------------------------------------------------- -r19 | zarq | 2000-04-18 22:30:20 +0200 (di, 18 apr 2000) | 2 lines + Fixed small mistake that would prevent forwarding requests. -Include genauth.8 in the distribution. +commit 069c146656b8f952e465492c53ab5b514e959565 +Author: Ivo Timmermans +Date: Mon May 1 22:00:02 2000 +0000 ------------------------------------------------------------------------- -r18 | zarq | 2000-04-18 22:26:49 +0200 (di, 18 apr 2000) | 2 lines + Mentioned new metaprotocol. -Include the directory redhat in the build process. +commit bd0325655867b1dff740d52d0505773bba0606a6 +Author: Ivo Timmermans +Date: Mon May 1 21:47:12 2000 +0000 ------------------------------------------------------------------------- -r17 | zarq | 2000-04-18 18:04:10 +0200 (di, 18 apr 2000) | 2 lines + More tincd->tinc updates. -Address for bugreports changed to tinc@nl.linux.org. +commit a9247e6f2c57bda9dc62ed050f41048847109e83 +Author: Ivo Timmermans +Date: Mon May 1 21:31:59 2000 +0000 ------------------------------------------------------------------------- -r16 | zarq | 2000-04-18 17:59:42 +0200 (di, 18 apr 2000) | 2 lines + Fixed meta protocol. -Updated manpages. +commit 9ea27f76fab3663c9c83a7fe7de95f74cbfd59be +Author: Ivo Timmermans +Date: Mon May 1 21:31:17 2000 +0000 ------------------------------------------------------------------------- -r15 | zarq | 2000-04-18 17:59:22 +0200 (di, 18 apr 2000) | 2 lines + Committed by Mads Kiilerich. -New manpage for genauth. +commit a92604fa5dffef589fc3042c5ae09ae8878e8cff +Author: Ivo Timmermans +Date: Mon May 1 19:17:09 2000 +0000 ------------------------------------------------------------------------- -r14 | zarq | 2000-04-18 17:09:11 +0200 (di, 18 apr 2000) | 2 lines + Updates by Mads Kiilerich. -Submitted by Mads Kiilerich. +commit ca6abd41ea0cdf2ca6491c3945fb3c62fd40ab98 +Author: Guus Sliepen +Date: Mon May 1 18:07:12 2000 +0000 ------------------------------------------------------------------------- -r13 | zarq | 2000-04-17 19:04:33 +0200 (ma, 17 apr 2000) | 2 lines + Meta protocol overhaul. Tinc is now incompatible with previous versions, + furthermore this version does NOT work yet because of a problem with + sending keys (these should be converted to base36 or something like that). + It is possible to telnet to the tinc daemon now and type some commands + by hand though :). -Default passphrase length of 1024, added -h/--help options. +commit 3219be5770716bdb0c8b6e9e4c674a447c5085f2 +Author: Ivo Timmermans +Date: Mon May 1 16:28:28 2000 +0000 ------------------------------------------------------------------------- -r12 | zarq | 2000-04-17 18:59:42 +0200 (ma, 17 apr 2000) | 2 lines + Committed by Lubom�r Bulej. -Check if stdout is a terminal, if so, print a verbose message. +commit 33cfdf43f4309c17d6df811b3c5d0af3a1c8679f +Author: Ivo Timmermans +Date: Sun Apr 30 20:48:48 2000 +0000 ------------------------------------------------------------------------- -r11 | zarq | 2000-04-17 18:52:58 +0200 (ma, 17 apr 2000) | 2 lines + Key forwarding, write one byte extra. -Check for an illegal length of passphrase in read_passphrase(). +commit 75d351eaf1264cfb7aa47166469e8ec722712a89 +Author: Ivo Timmermans +Date: Sun Apr 30 19:49:49 2000 +0000 ------------------------------------------------------------------------- -r10 | zarq | 2000-04-17 18:23:29 +0200 (ma, 17 apr 2000) | 2 lines + Protocol fix (ANS_KEY). This breaks 0.3.3 protocol compatibility. -Pass the requested size from xmalloc() and xrealloc() on to xalloc_fail_func() +commit b4290c3f4360f3cf01bb44957da0d8a20eac75f3 +Author: Ivo Timmermans +Date: Sun Apr 30 19:03:00 2000 +0000 ------------------------------------------------------------------------- -r9 | zarq | 2000-04-17 17:38:47 +0200 (ma, 17 apr 2000) | 4 lines + Send one less byte from an ANS_KEY request. -Only one round of reading bits out of urandom; -Reading `bytes' bytes out of it; -Print a newline after completion. +commit d878230ebef5f1a14a23c266dc425666d9e805eb +Author: Ivo Timmermans +Date: Sun Apr 30 18:57:16 2000 +0000 ------------------------------------------------------------------------- -r8 | zarq | 2000-04-12 18:22:39 +0200 (wo, 12 apr 2000) | 2 lines + Read one less byte from an ANS_KEY request. -Moved to version number 1.0. +commit 789a4c4f400de31d43b9c5f349f1de417443074a +Author: Ivo Timmermans +Date: Sun Apr 30 16:34:31 2000 +0000 ------------------------------------------------------------------------- -r7 | zarq | 2000-04-06 20:28:29 +0200 (do, 06 apr 2000) | 2 lines + Removed debug messages. -New option -D, don't detach. +commit eb1c9814e6b2a5206be1fadf19e0dc779690a69e +Author: Ivo Timmermans +Date: Sun Apr 30 16:31:23 2000 +0000 ------------------------------------------------------------------------- -r6 | zarq | 2000-03-28 21:16:27 +0200 (di, 28 mrt 2000) | 2 lines + Read public keys the right way (tm). -Ignore SIGCHLD. +commit ca73b722cbad5a08ec9bb5026ed5129da9a24bd8 +Author: Ivo Timmermans +Date: Sun Apr 30 16:11:05 2000 +0000 ------------------------------------------------------------------------- -r5 | zarq | 2000-03-28 21:09:52 +0200 (di, 28 mrt 2000) | 2 lines + New way of handling the meta protocol. -Kill the parent after any error conditions in detach(). +commit cd12345032e8547a50a1f7450814364f39f0c4ec +Author: Ivo Timmermans +Date: Sun Apr 30 13:23:53 2000 +0000 ------------------------------------------------------------------------- -r4 | zarq | 2000-03-28 00:59:16 +0200 (di, 28 mrt 2000) | 2 lines + Replaced check for status.active by status.dataopen in check_network_activity. -Upon regeneration, free the old encryption key `securely\' by overwriting it. +commit 4b076ee87fcf8aaf1d9a2bd3c27524b4e3840167 +Author: Ivo Timmermans +Date: Sun Apr 30 01:16:51 2000 +0000 ------------------------------------------------------------------------- -r3 | zarq | 2000-03-28 00:30:27 +0200 (di, 28 mrt 2000) | 2 lines + Initially, the vpn_mask of a connection is 255.255.255.255 to avoid confusion with lookup_conn. -Get rid of the message `zxnrbl\'. +commit 1c007c0627ad5e71b8218fcb086240970e955c87 +Author: Ivo Timmermans +Date: Sun Apr 30 01:15:47 2000 +0000 ------------------------------------------------------------------------- -r1 | zarq | 2000-03-26 01:33:07 +0100 (zo, 26 mrt 2000) | 2 lines + Got rid of the nasty hacks... and replaced it by another one. -Initial revision +commit c02745991422ac3d8097b126e8b256a9b33ad24b +Author: Ivo Timmermans +Date: Sat Apr 29 20:39:36 2000 +0000 ------------------------------------------------------------------------- + Filled up the protocol structs with unused bytes. + +commit d3e8e8ca54928e48400584d8a70c42bbf4ae6aeb +Author: Ivo Timmermans +Date: Sat Apr 29 20:38:23 2000 +0000 + + Added `deb' target. + +commit 4dbf7022a25e678969856a38501318db4d420936 +Author: Ivo Timmermans +Date: Sat Apr 29 13:56:06 2000 +0000 + + More updates wrt. the change from tincd->tinc. + +commit 23715510149179089952eef0a2d6f87571ac0e7e +Author: Guus Sliepen +Date: Fri Apr 28 11:33:25 2000 +0000 + + Oops! Reference to write_n() removed and changed into neat write() call. + +commit bb8fff92e1bc594a085c2cbd12b215d334695feb +Author: Guus Sliepen +Date: Thu Apr 27 20:57:18 2000 +0000 + + Removed write_n() function. + +commit 4fec0cc45774ba313d1823cc64c3afdda3204a2e +Author: Ivo Timmermans +Date: Thu Apr 27 13:47:51 2000 +0000 + + Default config file name is tinc.conf, and pidfile is tinc.pid. + +commit eebb708cb29a121ea8d58bb6ca6caf41dea3c3b4 +Author: Ivo Timmermans +Date: Thu Apr 27 00:07:17 2000 +0000 + + Updated version number to 1.0. + +commit 5797d3fcb1ff56ad3ff577f7eb988b70f9d4d709 +Author: Ivo Timmermans +Date: Thu Apr 27 00:01:00 2000 +0000 + + Filled in the details, license from libblowfish copied. + +commit a3ccc15ac0979c4103f98e740b525634e8e17a0a +Author: Ivo Timmermans +Date: Wed Apr 26 23:56:22 2000 +0000 + + Version to 1.0pre1; + Create Makefile and build in debian/. + +commit d928703db1c4aa6caa6e4fbb0894037b10dce820 +Author: Ivo Timmermans +Date: Wed Apr 26 23:23:01 2000 +0000 + + Omit TODO. + +commit d0ea9c8ff287e879e531af9f1b52529421c0512f +Author: Ivo Timmermans +Date: Wed Apr 26 22:42:15 2000 +0000 + + Add an entry to dir. + +commit e5a7291543d41d435cc0fae56e52dc62a119a225 +Author: Ivo Timmermans +Date: Wed Apr 26 22:01:01 2000 +0000 + + The make command is in /usr/bin. + +commit 44f9449888344866406c75b178eff83b392b3530 +Author: Guus Sliepen +Date: Wed Apr 26 17:42:55 2000 +0000 + + Cleanups: + - Changed recv/send calls into read/write calls for streams + - Made all sizeof() functions use a variable name instead of type + +commit fca84d8a7d116c62423faf88e841daf1bee714e1 +Author: Ivo Timmermans +Date: Wed Apr 26 14:54:43 2000 +0000 + + From Mads Kiilerich. + +commit 8efe4874dabdfdf03a747ea98cf38b11cb591ef5 +Author: Guus Sliepen +Date: Tue Apr 25 22:15:28 2000 +0000 + + Converted every &variable[0] to variable. + +commit 643d8712eb2f82bde21f206306cdb6491eee7e08 +Author: Ivo Timmermans +Date: Tue Apr 25 22:00:49 2000 +0000 + + Debug level tweaking. + +commit 468f1d2efcce53937b7f5e0540269ae18f29ebac +Author: Guus Sliepen +Date: Tue Apr 25 20:50:59 2000 +0000 + + When trying to talk to a host that is in the netmask of a tinc server but + not the tinc server itself, and no keys have been exchanged yet, the key + request would be directed to the host instead of the server. Fixed. + +commit 6461a4b607f5e422b5809acb772e4bfe810b5570 +Author: Ivo Timmermans +Date: Tue Apr 25 20:42:54 2000 +0000 + + *** empty log message *** + +commit dad90e82d3c7af95820b1c04903bed7074e2b175 +Author: Guus Sliepen +Date: Tue Apr 25 20:17:44 2000 +0000 + + Fixed typo and removed some unnecessary variables. + +commit 5b7242285795f5143770b663055b87ebb5dd15b8 +Author: Guus Sliepen +Date: Tue Apr 25 20:10:37 2000 +0000 + + Packet queues fixed. They caused the trouble when resending keys. + +commit 04db888b1a94a7d63fdf9800cfd722aa9c16cd26 +Author: Ivo Timmermans +Date: Tue Apr 25 19:23:23 2000 +0000 + + Create a ChangeLog file, automake requires it. + +commit c78b76c53f516cf944ee738fad3e7d4607f282ab +Author: Ivo Timmermans +Date: Tue Apr 25 19:21:19 2000 +0000 + + *** empty log message *** + +commit 45b275e2542b4e8e7deac9e5e9eeddacfdbce90f +Author: Ivo Timmermans +Date: Tue Apr 25 19:11:02 2000 +0000 + + Initial CVS. + +commit 3a3356865267ff4c1e4f7d73f6d1486952d641b5 +Author: Guus Sliepen +Date: Tue Apr 25 18:57:23 2000 +0000 + + Added checkpoints to beginning and ending of every function. + +commit b6bdb9079a9e80b77443efe6c8b6da19e57e8505 +Author: Ivo Timmermans +Date: Tue Apr 25 17:38:54 2000 +0000 + + Remove ChangeLog with a `make cvs-clean'. + +commit ca373c61944a7bd2fe26faf081edea136104d326 +Author: Ivo Timmermans +Date: Tue Apr 25 17:35:45 2000 +0000 + + Don't include TODO in the dist. + +commit e1e590fe9a8c5c767933c68979418911f36d3a89 +Author: Ivo Timmermans +Date: Tue Apr 25 15:08:10 2000 +0000 + + Propagate CFLAGS from configure to gcc. + +commit 8a90de94a1b0e6cdaf51559d44f04a75d5f9ab0e +Author: Ivo Timmermans +Date: Tue Apr 25 15:07:21 2000 +0000 + + Delete all the files that are created by autogen.sh on a `make cvs-clean'. + +commit 24ee68b683de9937e917898075c62ff5f43ee46a +Author: Ivo Timmermans +Date: Tue Apr 25 10:40:08 2000 +0000 + + Spelling fixes. + +commit 4d85552c5bf134ada1d1083ec86dabbe41497c4a +Author: Ivo Timmermans +Date: Tue Apr 25 10:27:44 2000 +0000 + + Contributed by Mads Kiilerich. + +commit 94921d6e57e01b378ab8b1d8ea9cf3da9511fbef +Author: Ivo Timmermans +Date: Tue Apr 25 10:22:26 2000 +0000 + + Generate this Makefile.am from Makefile.am.in. + +commit 8c2b6537d32720b38554815181009c3098423414 +Author: Ivo Timmermans +Date: Tue Apr 25 09:43:50 2000 +0000 + + *** empty log message *** + +commit 03fa76dbf9965cc174eebe8a152307b8fbb63079 +Author: Ivo Timmermans +Date: Tue Apr 25 09:42:52 2000 +0000 + + Added Mads Kiilerich, removed Guus Sliepen. + +commit 7c665712d69d5a502d4c2f098ad85df3b17bfb92 +Author: Ivo Timmermans +Date: Tue Apr 25 01:45:34 2000 +0000 + + Changes largely from Mads Kiilerich. + Removed section about encryption. + +commit ce98ee1ed4121fbbf5d0e13e158511064ced6b16 +Author: Ivo Timmermans +Date: Tue Apr 25 01:26:35 2000 +0000 + + Remove test for GNOME. + +commit 6c99feb3e3cf6d69bcf52ae87b6c64ddbf3ffca5 +Author: Ivo Timmermans +Date: Tue Apr 25 01:25:18 2000 +0000 + + Use `make ChangeLog' to create this file from the CVS logs. + +commit f9eef5210dbc9c0fe54637cc4c3c0be134a51409 +Author: Ivo Timmermans +Date: Tue Apr 25 01:23:31 2000 +0000 + + Don't define HAVE_NAMESPACES and HAVE_STL. + +commit ea9d2f379a170077f93569a957c713452768d0a4 +Author: Ivo Timmermans +Date: Tue Apr 25 01:22:01 2000 +0000 + + Remove check for bigendianness. + +commit 18b204d17a054e991d90b7c4047ea106df64cdaf +Author: Ivo Timmermans +Date: Tue Apr 25 01:15:28 2000 +0000 + + This file is obsolete, most of the ideas are already in echelon. + +commit 62d5384ee01ae818906f2f8ba1456372a13a2420 +Author: Ivo Timmermans +Date: Tue Apr 25 01:10:38 2000 +0000 + + s/Gnome/tinc/g + +commit f0101589959496593db672c6a35704ea5fb33238 +Author: Ivo Timmermans +Date: Tue Apr 25 00:50:48 2000 +0000 + + The shell script autogen.sh can create all these removed files, but be + sure to have autoconf, automake, libtool and more installed. + +commit 6990a7455521665d3b67518e3f2297968108190b +Author: Ivo Timmermans +Date: Tue Apr 25 00:11:33 2000 +0000 + + Don't try to create cipher/idea/Makefile. + +commit cfecc82c9a3f5e8c4648eec058da2c6427cd76af +Author: Ivo Timmermans +Date: Mon Apr 24 21:12:32 2000 +0000 + + Don't include idea/idea.h. + +commit 63540ceff5c7bb7c76d96a4cef4ba803ce915ce1 +Author: Ivo Timmermans +Date: Mon Apr 24 21:10:33 2000 +0000 + + Don't compile in `idea'. + +commit 74315f4218ba50cc5ba32b6ecc8e8afa2b5cd704 +Author: Ivo Timmermans +Date: Mon Apr 24 20:57:22 2000 +0000 + + These files are not needed in release 1.0. + +commit 16d581be68bb52c08569e34e8a6b87f66b87e8ee +Author: Guus Sliepen +Date: Mon Apr 24 09:39:50 2000 +0000 + + Bug found! Wrong pointer was used for handling multiple ADD_HOST requests + at once. (See line 606.) + +commit f6802d349d946090bf9d1b6c761077c80065afa5 +Author: Guus Sliepen +Date: Mon Apr 24 08:32:57 2000 +0000 + + Added extra checks for desynchronized connection lists. Hopefully this will + fix those strange segmentation faults. + +commit 10749179127c681ce040fcf612038174b2bd474a +Author: Ivo Timmermans +Date: Thu Apr 20 22:50:48 2000 +0000 + + Added cvs-clean. + +commit c92701fcf007b67725d82a23ffaef3e6e5c2b0e1 +Author: Ivo Timmermans +Date: Thu Apr 20 19:14:09 2000 +0000 + + Keep make dist(dir) happy. + +commit 7db17968fc84127212ebba0fbccec1e75ced2bdc +Author: Ivo Timmermans +Date: Tue Apr 18 20:44:29 2000 +0000 + + A short notice from Mads Kiilerich. + +commit 2c5a555d7aefcf5699c68cb5d5f00f604b2542c7 +Author: Ivo Timmermans +Date: Tue Apr 18 20:43:24 2000 +0000 + + Submitted changes by Mads Kiilerich. + +commit 375b668dbc1e0268b49ea12901da72bbf5247ce5 +Author: Ivo Timmermans +Date: Tue Apr 18 20:30:20 2000 +0000 + + Include genauth.8 in the distribution. + +commit 57d8c30e4cbecea3b4216e4e650c4c0a3e160ed2 +Author: Ivo Timmermans +Date: Tue Apr 18 20:26:49 2000 +0000 + + Include the directory redhat in the build process. + +commit 0b02ebc4d98182cf79c670e7e556ac7f4f859b75 +Author: Ivo Timmermans +Date: Tue Apr 18 16:04:10 2000 +0000 + + Address for bugreports changed to tinc@nl.linux.org. + +commit 8770211c84cfb69f71bd204926593900d74ab579 +Author: Ivo Timmermans +Date: Tue Apr 18 15:59:42 2000 +0000 + + Updated manpages. + +commit 8cdb84951019feb6d4954cd11eb9663c5b9ce363 +Author: Ivo Timmermans +Date: Tue Apr 18 15:59:22 2000 +0000 + + New manpage for genauth. + +commit d11cfcec74e25ee2b88acea62ca5ef973ab7204b +Author: Ivo Timmermans +Date: Tue Apr 18 15:09:11 2000 +0000 + + Submitted by Mads Kiilerich. + +commit 93287d2b2c77d4b9e3f85f36ef4f9230fe3bf9b3 +Author: Ivo Timmermans +Date: Mon Apr 17 17:04:33 2000 +0000 + + Default passphrase length of 1024, added -h/--help options. + +commit 9c2ac77594d83a810c53faf6979e0b76006ecd0e +Author: Ivo Timmermans +Date: Mon Apr 17 16:59:42 2000 +0000 + + Check if stdout is a terminal, if so, print a verbose message. + +commit c9246896901ff1ebad91ac399a4ea79fad941f75 +Author: Ivo Timmermans +Date: Mon Apr 17 16:52:58 2000 +0000 + + Check for an illegal length of passphrase in read_passphrase(). + +commit baebae274913d912d76ba1d545f337dfb945fc5c +Author: Ivo Timmermans +Date: Mon Apr 17 16:23:29 2000 +0000 + + Pass the requested size from xmalloc() and xrealloc() on to xalloc_fail_func() + +commit 210a92cae90deb5b4a410b1b7d5c625c5c5f2ffb +Author: Ivo Timmermans +Date: Mon Apr 17 15:38:47 2000 +0000 + + Only one round of reading bits out of urandom; + Reading `bytes' bytes out of it; + Print a newline after completion. + +commit 5b44b91eb408d76af646b031da2364a769b44771 +Author: Ivo Timmermans +Date: Wed Apr 12 16:22:39 2000 +0000 + + Moved to version number 1.0. + +commit 18e044bde3b508c991910218989b4bacc3a4934e +Author: Ivo Timmermans +Date: Thu Apr 6 18:28:29 2000 +0000 + + New option -D, don't detach. + +commit 523c80c4e35b7ff8ad94b41a6071dbe2b8ff6ec7 +Author: Ivo Timmermans +Date: Tue Mar 28 19:16:27 2000 +0000 + + Ignore SIGCHLD. + +commit f2076e3e7031ac8ad87eb6aab0cea40f379dd0c6 +Author: Ivo Timmermans +Date: Tue Mar 28 19:09:52 2000 +0000 + + Kill the parent after any error conditions in detach(). + +commit 98de35c742498878a27fb29becd3b7154525a60f +Author: Ivo Timmermans +Date: Mon Mar 27 22:59:16 2000 +0000 + + Upon regeneration, free the old encryption key `securely\' by overwriting it. + +commit b50523dc44bbb32f03d24573e195c071cbff3fc4 +Author: Ivo Timmermans +Date: Mon Mar 27 22:30:27 2000 +0000 + + Get rid of the message `zxnrbl\'. + +commit 1243156a5e03a666b36bc4400f1402243a85c9a7 +Author: Ivo Timmermans +Date: Sun Mar 26 00:33:07 2000 +0000 + + Initial revision diff --git a/INSTALL b/INSTALL index d3c5b40..2550dab 100644 --- a/INSTALL +++ b/INSTALL @@ -2,15 +2,15 @@ Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007 Free Software Foundation, Inc. +2006, 2007, 2008, 2009 Free Software Foundation, Inc. -This file is free documentation; the Free Software Foundation gives + This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== -Briefly, the shell commands `./configure; make; make install' should + Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. @@ -73,9 +73,9 @@ The simplest way to compile this package is: Compilers and Options ===================== -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here @@ -88,7 +88,7 @@ is an example: 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 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 @@ -100,10 +100,24 @@ architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before 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 ================== -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 can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. @@ -126,7 +140,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= -Some packages pay attention to `--enable-FEATURE' options to + 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 @@ -138,14 +152,46 @@ find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. +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. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' 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 ========================== -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +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 type, such as `sun4', or a canonical name which has the form: @@ -153,7 +199,8 @@ type, such as `sun4', or a canonical name which has the form: 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 `config.sub' isn't included in this package, then this package doesn't @@ -171,9 +218,9 @@ eventually be run) with `--host=TYPE'. Sharing Defaults ================ -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. @@ -182,7 +229,7 @@ A warning: not all `configure' scripts look for a site script. 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 configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set @@ -201,11 +248,19 @@ an Autoconf bug. Until the bug is fixed you can use this workaround: `configure' Invocation ====================== -`configure' recognizes the following options to control how it operates. + `configure' recognizes the following options to control how it +operates. `--help' `-h' - Print a summary of the options to `configure', and exit. + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + 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' @@ -232,6 +287,16 @@ an Autoconf bug. Until the bug is fixed you can use this workaround: Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. +`--prefix=DIR' + 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. diff --git a/Makefile.am b/Makefile.am index 306a0ed..b13689a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,17 +2,14 @@ AUTOMAKE_OPTIONS = gnu -SUBDIRS = m4 lib src doc po +SUBDIRS = m4 lib src doc ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = config.rpath mkinstalldirs have.h system.h COPYING.README depcomp +EXTRA_DIST = have.h system.h COPYING.README ChangeLog: - svn log > ChangeLog - -svn-clean: maintainer-clean - svn status --no-ignore | sed -n 's/^[?I] \+//p' | tr '\012' '\0' | xargs -r0 rm -rf + git log > ChangeLog deb: dpkg-buildpackage -rfakeroot diff --git a/Makefile.in b/Makefile.in index c854149..b3e277d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11 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. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,8 +16,9 @@ @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -34,24 +36,20 @@ host_triplet = @host@ 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 + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + THANKS config.guess config.sub depcomp install-sh missing 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/lzo.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ @@ -63,6 +61,9 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -70,9 +71,34 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(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 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print @@ -97,7 +123,6 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ GREP = @GREP@ INCLUDES = @INCLUDES@ INSTALL = @INSTALL@ @@ -105,38 +130,28 @@ 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_URL = @PACKAGE_URL@ 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@ @@ -184,12 +199,13 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = gnu -SUBDIRS = m4 lib src doc po +SUBDIRS = m4 lib src doc ACLOCAL_AMFLAGS = -I m4 -EXTRA_DIST = config.rpath mkinstalldirs have.h system.h COPYING.README depcomp +EXTRA_DIST = have.h system.h COPYING.README all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -200,15 +216,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -224,9 +240,10 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) + $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ @@ -238,7 +255,7 @@ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ @@ -269,7 +286,7 @@ $(RECURSIVE_TARGETS): else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ @@ -303,16 +320,16 @@ $(RECURSIVE_CLEAN_TARGETS): else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__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); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -320,14 +337,14 @@ ID: $(HEADERS) $(SOURCES) $(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; } \ + $(AWK) '{ files[$$0] = 1; nonempty = 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=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -339,7 +356,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ @@ -348,36 +365,41 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ 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 \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(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" \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) + test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -393,38 +415,54 @@ distdir: $(DISTFILES) 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; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 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 \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$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) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -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 {} {} \; \ - || chmod -R a+r $(distdir) + || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) @@ -437,6 +475,10 @@ dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) @@ -465,6 +507,8 @@ distcheck: dist bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ @@ -476,9 +520,11 @@ distcheck: dist mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ @@ -500,13 +546,15 @@ distcheck: dist && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ 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' distuninstallcheck: - @cd $(distuninstallcheck_dir) \ + @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ @@ -548,6 +596,7 @@ clean-generic: distclean-generic: -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: @echo "This command is intended for maintainers to use" @@ -567,6 +616,8 @@ dvi-am: html: html-recursive +html-am: + info: info-recursive info-am: @@ -575,18 +626,28 @@ install-data-am: install-dvi: install-dvi-recursive +install-dvi-am: + install-exec-am: install-html: install-html-recursive +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: install-pdf: install-pdf-recursive +install-pdf-am: + install-ps: install-ps-recursive +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -609,30 +670,27 @@ ps-am: uninstall-am: -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-generic distclean-hdr distclean-tags distcleancheck \ - distdir distuninstallcheck 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 installdirs-am maintainer-clean \ + dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ + distclean distclean-generic distclean-hdr distclean-tags \ + distcleancheck distdir distuninstallcheck 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 installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am ChangeLog: - svn log > ChangeLog - -svn-clean: maintainer-clean - svn status --no-ignore | sed -n 's/^[?I] \+//p' | tr '\012' '\0' | xargs -r0 rm -rf + git log > ChangeLog deb: dpkg-buildpackage -rfakeroot @@ -648,6 +706,7 @@ release: 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. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/NEWS b/NEWS index 736f5e6..b0a5533 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,38 @@ +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 * Fixed tinc as a service under Windows 2003. @@ -15,12 +50,16 @@ Version 1.0.9 Dec 26 2008 * Fixed a memory leak that occured when connections were closed. + Thanks to Max Rijevski for his contributions to this version of tinc. + Version 1.0.8 May 16 2007 * Fixed some memory and resource leaks. * 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 * Fixed a bug that caused slow network speeds on Windows. @@ -48,6 +87,8 @@ version 1.0.5 Nov 14 2006 * 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 * Fix switch and hub modes. diff --git a/README b/README index 23b2458..a8fff17 100644 --- a/README +++ b/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.10. Installation instructions may be found in the INSTALL file. -tinc is Copyright (C) 1998-2008 by: +tinc is Copyright (C) 1998-2009 by: Ivo Timmermans, Guus Sliepen , @@ -55,7 +55,7 @@ should be changed into "Device", and "Device" should be changed into Compatibility ------------- -Version 1.0.9 is compatible with 1.0pre8, 1.0 and later, but not with older +Version 1.0.10 is compatible with 1.0pre8, 1.0 and later, but not with older versions of tinc. @@ -115,8 +115,7 @@ Support for routing IPv6 packets has been added. Just add Subnet lines with IPv6 addresses (without using :: abbreviations) and use ifconfig or ip (from the iproute package) to give the virtual network interface corresponding IPv6 addresses. tinc does not provide autoconfiguration for IPv6 hosts, if you need -it use radvd or zebra. Tunneling IPv6 packets only works on Linux, FreeBSD, -Windows and possibly OpenBSD. +it use radvd or zebra. 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 diff --git a/THANKS b/THANKS index ce5ec13..e0d33d3 100644 --- a/THANKS +++ b/THANKS @@ -5,8 +5,11 @@ We would like to thank the following people for their contributions to tinc: * Andreas van Cranenburgh * Armijn Hemel * Cris van Pelt +* Delf Eldkraft +* dnk * Enrique Zanardi * Flynn Marquardt +* Grzegorz Dymarek * Hans Bayle * Ivo van Dong * James MacLean @@ -22,6 +25,8 @@ We would like to thank the following people for their contributions to tinc: * Martin Kihlgren * Matias Carrasco * Max Rijevski +* Menno Smits +* Michael Tokarev * Miles Nordin * Nick Patavalis * Paul Littlefield diff --git a/aclocal.m4 b/aclocal.m4 index 25cd12f..1343274 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,7 +1,7 @@ -# generated automatically by aclocal 1.10.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file 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. @@ -13,13 +13,13 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],, +[m4_warning([this file was generated for autoconf 2.64. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -31,10 +31,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.]) # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.10' +[am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.10.1], [], +m4_if([$1], [1.11], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -48,12 +48,12 @@ m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.10.1])dnl +[AM_AUTOMAKE_VERSION([1.11])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- @@ -110,14 +110,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 8 +# serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- @@ -130,6 +130,7 @@ AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' @@ -143,14 +144,14 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file 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. -# serial 9 +# serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -207,6 +208,16 @@ AC_CACHE_CHECK([dependency style of $depcc], if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -224,7 +235,17 @@ AC_CACHE_CHECK([dependency style of $depcc], done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -234,19 +255,23 @@ AC_CACHE_CHECK([dependency style of $depcc], break fi ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -303,57 +328,68 @@ _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -#serial 3 +#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done done -done +} ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -373,13 +409,13 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008 Free Software Foundation, Inc. +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. -# serial 13 +# serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. @@ -396,7 +432,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.60])dnl +[AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -447,8 +483,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. @@ -456,24 +492,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header @@ -496,7 +545,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -507,7 +556,14 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. @@ -534,27 +590,38 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 4 +# serial 5 +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless `enable' is passed literally. +# For symmetry, `disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], +[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl + AC_SUBST([MAINT])dnl ] ) @@ -562,13 +629,13 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. -# serial 3 +# serial 4 # AM_MAKE_INCLUDE() # ----------------- @@ -577,7 +644,7 @@ AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -587,24 +654,24 @@ am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) @@ -614,14 +681,14 @@ rm -f confinc confmf # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 5 +# serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ @@ -638,7 +705,14 @@ AC_SUBST($1)]) AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " @@ -676,13 +750,13 @@ esac # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. -# serial 3 +# serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -699,7 +773,7 @@ AC_DEFUN([_AM_SET_OPTION], # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- @@ -709,14 +783,14 @@ AC_DEFUN([_AM_IF_OPTION], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 4 +# serial 5 # AM_SANITY_CHECK # --------------- @@ -725,16 +799,29 @@ AC_DEFUN([AM_SANITY_CHECK], # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ @@ -787,18 +874,25 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006 Free Software Foundation, Inc. +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file 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. +# serial 2 + # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. @@ -896,14 +990,6 @@ AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/attribute.m4]) -m4_include([m4/gettext.m4]) -m4_include([m4/iconv.m4]) -m4_include([m4/lib-ld.m4]) -m4_include([m4/lib-link.m4]) -m4_include([m4/lib-prefix.m4]) m4_include([m4/lzo.m4]) -m4_include([m4/nls.m4]) m4_include([m4/openssl.m4]) -m4_include([m4/po.m4]) -m4_include([m4/progtest.m4]) m4_include([m4/zlib.m4]) diff --git a/config.guess b/config.guess index f32079a..e3a2116 100755 --- a/config.guess +++ b/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2008-01-23' +timestamp='2009-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -170,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -324,6 +324,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; @@ -331,7 +334,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -640,7 +656,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -796,7 +812,7 @@ EOF x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) @@ -806,6 +822,9 @@ EOF [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -866,40 +885,17 @@ EOF m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:*) + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 + CPU=${UNAME_MACHINE} #else CPU= #endif @@ -931,10 +927,13 @@ EOF EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -982,17 +981,6 @@ EOF elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -1058,7 +1046,7 @@ EOF i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) @@ -1102,8 +1090,11 @@ EOF pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 @@ -1141,6 +1132,16 @@ EOF 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1153,7 +1154,7 @@ EOF rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) @@ -1216,6 +1217,9 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1324,6 +1328,9 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 diff --git a/config.h.in b/config.h.in index e834f0c..afd4b5f 100644 --- a/config.h.in +++ b/config.h.in @@ -11,12 +11,8 @@ /* Support for jumbograms (packets up to 9000 bytes) */ #undef ENABLE_JUMBOGRAMS -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#undef ENABLE_NLS - -/* Checkpoint tracing */ -#undef ENABLE_TRACING +/* Support for tunemu */ +#undef ENABLE_TUNEMU /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA @@ -43,9 +39,21 @@ /* Darwin (MacOS/X) */ #undef HAVE_DARWIN -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#undef HAVE_DCGETTEXT +/* 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 `EVP_EncryptInit_ex' function. */ #undef HAVE_EVP_ENCRYPTINIT_EX @@ -59,39 +67,18 @@ /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK -/* Define to 1 if you have the `freeaddrinfo' function. */ -#undef HAVE_FREEADDRINFO - /* FreeBSD */ #undef HAVE_FREEBSD /* Define to 1 if you have the `ftime' function. */ #undef HAVE_FTIME -/* Define to 1 if you have the `gai_strerror' function. */ -#undef HAVE_GAI_STRERROR - -/* 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. */ #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 header file. */ #undef HAVE_INTTYPES_H @@ -361,6 +348,9 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME +/* Define to the home page for this package. */ +#undef PACKAGE_URL + /* Define to the version of this package. */ #undef PACKAGE_VERSION @@ -384,13 +374,43 @@ /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME -/* Version number of package */ -#undef VERSION - +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #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 */ #undef __USE_BSD diff --git a/config.rpath b/config.rpath deleted file mode 100755 index 4db13e5..0000000 --- a/config.rpath +++ /dev/null @@ -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 , 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 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=/' </dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -63,20 +84,18 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -87,32 +106,270 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -126,13 +383,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -147,294 +408,19 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= @@ -451,8 +437,7 @@ test \$exitcode = 0") || { s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the @@ -462,49 +447,40 @@ test \$exitcode = 0") || { exit } - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir + mkdir conf$$.dir 2>/dev/null fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi @@ -512,7 +488,7 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false @@ -529,12 +505,12 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else - case $1 in - -*)set "./$1";; + case $1 in #( + -*)set "./$1";; esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' @@ -548,7 +524,6 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - exec 7<&0 &1 # Name of the host. @@ -567,7 +542,6 @@ cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= @@ -575,6 +549,7 @@ PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= +PACKAGE_URL= ac_unique_file="src/tincd.c" # Factoring default headers for most tests. @@ -613,114 +588,125 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -MAINTAINER_MODE_TRUE -MAINTAINER_MODE_FALSE -MAINT -MKINSTALLDIRS -USE_NLS -MSGFMT -GMSGFMT -XGETTEXT -MSGMERGE -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -LIBICONV -LTLIBICONV -INTLLIBS -LIBINTL -LTLIBINTL -POSUB -CPP -LN_S -RANLIB -GREP -EGREP -LIBOBJS -ALLOCA +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS INCLUDES -LTLIBOBJS' +ALLOCA +LIBOBJS +TUNEMU_FALSE +TUNEMU_TRUE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +RANLIB +LN_S +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_dependency_tracking +enable_tunemu +with_windows2000 +with_openssl +with_openssl_include +with_openssl_lib +with_zlib +with_zlib_include +with_zlib_lib +with_lzo +with_lzo_include +with_lzo_lib +enable_jumbograms +' ac_precious_vars='build_alias host_alias target_alias @@ -735,6 +721,8 @@ CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -833,13 +821,20 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -852,13 +847,20 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1049,22 +1051,36 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1084,25 +1100,25 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -1111,23 +1127,36 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error "missing argument to $ac_option" fi -# Be sure to have absolute directory names. +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -1141,7 +1170,7 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes @@ -1157,23 +1186,21 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } + as_fn_error "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } + as_fn_error "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1200,13 +1227,11 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then @@ -1254,9 +1279,9 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1266,25 +1291,25 @@ for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1305,26 +1330,22 @@ if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer - --disable-nls do not use Native Language Support --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors - --disable-rpath do not hardcode runtime library paths + --enable-tunemu enable support for the tunemu driver --enable-jumbograms enable support for jumbograms (packets up to 9000 bytes) - --enable-tracing enable checkpoint tracing (debugging only) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir + --with-windows2000 compile with support for Windows 2000. This disables + support for tunneling over existing IPv6 networks. --with-openssl=DIR OpenSSL base directory, or: --with-openssl-include=DIR OpenSSL headers directory (without trailing @@ -1350,6 +1371,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. +Report bugs to the package provider. _ACEOF ac_status=$? fi @@ -1357,15 +1379,17 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1401,7 +1425,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1411,21 +1435,465 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure -generated by GNU Autoconf 2.61 +generated by GNU Autoconf 2.64 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_c_check_decl LINENO SYMBOL VAR +# ------------------------------------ +# Tests whether SYMBOL is declared, setting cache variable VAR accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5 +$as_echo_n "checking whether $2 is declared... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $2 + (void) $2; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ @@ -1461,8 +1929,8 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done IFS=$as_save_IFS } >&5 @@ -1496,12 +1964,12 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1517,13 +1985,13 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there @@ -1548,12 +2016,13 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -1582,9 +2051,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo @@ -1599,9 +2068,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1617,64 +2086,69 @@ _ASBOX echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h + # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do + test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1684,16 +2158,16 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1707,60 +2181,56 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi - - - - - - - - - - - - - - - - +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1770,28 +2240,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -am__api_version='1.10' +am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, @@ -1816,22 +2278,23 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -1849,17 +2312,29 @@ case $as_dir/ in # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -1872,8 +2347,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1883,21 +2358,34 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ @@ -1907,11 +2395,8 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -1920,52 +2405,162 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do + for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( @@ -1977,7 +2572,7 @@ do esac done done -done + done IFS=$as_save_IFS fi @@ -1993,8 +2588,8 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2006,10 +2601,10 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2019,36 +2614,37 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh @@ -2065,12 +2661,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2089,9 +2685,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi @@ -2107,7 +2701,7 @@ fi # Define the identity of the package. PACKAGE=tinc - VERSION=1.0.9 + VERSION=1.0.10 cat >>confdefs.h <<_ACEOF @@ -2135,112 +2729,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. @@ -2255,17 +2743,18 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers config.h" -{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then +if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi - { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -2278,330 +2767,9 @@ fi - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } - - - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - { echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_GMSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_XGETTEXT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - rm -f messages.po - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_path_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; } - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - +# 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. DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -2610,44 +2778,44 @@ ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then +if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi @@ -2672,10 +2840,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2685,25 +2853,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2712,10 +2880,10 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2725,25 +2893,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2751,12 +2919,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2769,10 +2933,10 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2782,25 +2946,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2809,10 +2973,10 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2823,18 +2987,18 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then @@ -2853,11 +3017,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2868,10 +3032,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2881,25 +3045,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2912,10 +3076,10 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2925,25 +3089,25 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do + for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2955,12 +3119,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2970,98 +3130,82 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +#include int main () { +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles -if { (ac_try="$ac_link_default" +if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3071,14 +3215,14 @@ for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3097,78 +3241,75 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then : + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } fi - ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (case "(($ac_try" in + { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +See \`config.log' for more details." "$LINENO" 5; } fi fi fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3176,37 +3317,31 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } fi - rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3218,51 +3353,46 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" +if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3276,54 +3406,34 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no + ac_compiler_gnu=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3334,34 +3444,11 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3372,35 +3459,12 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_c_try_compile "$LINENO"; then : - ac_c_werror_flag=$ac_save_c_werror_flag +else + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3411,42 +3475,18 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3462,18 +3502,14 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -3530,31 +3566,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - fi - rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done @@ -3565,17 +3579,19 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3585,10 +3601,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3613,6 +3629,11 @@ else if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -3630,7 +3651,17 @@ else done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -3640,19 +3671,23 @@ else break fi ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -3676,8 +3711,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3691,37 +3726,916 @@ else fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = x""yes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + +$as_echo "#define __USE_BSD 1" >>confdefs.h + + +ALL_LINGUAS="nl" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if test "${ac_cv_prog_cc_c99+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' @@ -3737,28 +4651,24 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' @@ -3775,2704 +4685,99 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } -else - { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } -fi -if test "${acl_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } -if test "${acl_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } -if test "${acl_cv_rpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - # Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then - enableval=$enable_rpath; : -else - enable_rpath=yes -fi - - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval=$with_libiconv_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi - - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - - - - - - - - { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } - - - - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - - - - - - { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; } -if test "${gt_cv_func_gnugettext1_libc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - gt_cv_func_gnugettext1_libc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_func_gnugettext1_libc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6; } - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - { echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6; } -if test "${am_cv_func_iconv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ICONV 1 -_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then - { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then - withval=$with_libintl_prefix; - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi - - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; } -if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - gt_cv_func_gnugettext1_libintl=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gt_cv_func_gnugettext1_libintl=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -{ echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6; } - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - { echo "$as_me:$LINENO: checking whether to use NLS" >&5 -echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 -echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { echo "$as_me:$LINENO: result: $gt_source" >&5 -echo "${ECHO_T}$gt_source" >&6; } - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - { echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } - { echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6; } - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - - - -# 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. - -cat >>confdefs.h <<\_ACEOF -#define _GNU_SOURCE 1 -_ACEOF - - - -cat >>confdefs.h <<\_ACEOF -#define __USE_BSD 1 -_ACEOF - - -ALL_LINGUAS="nl" - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - -#AC_CANONICAL_HOST - case $host_os in *linux*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_LINUX 1 -_ACEOF +$as_echo "#define HAVE_LINUX 1" >>confdefs.h rm -f src/device.c; ln -sf linux/device.c src/device.c ;; *freebsd*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_FREEBSD 1 -_ACEOF +$as_echo "#define HAVE_FREEBSD 1" >>confdefs.h rm -f src/device.c; ln -sf bsd/device.c src/device.c ;; *darwin*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_DARWIN 1 -_ACEOF +$as_echo "#define HAVE_DARWIN 1" >>confdefs.h rm -f src/device.c; ln -sf bsd/device.c src/device.c ;; *solaris*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_SOLARIS 1 -_ACEOF +$as_echo "#define HAVE_SOLARIS 1" >>confdefs.h rm -f src/device.c; ln -sf solaris/device.c src/device.c ;; *openbsd*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_OPENBSD 1 -_ACEOF +$as_echo "#define HAVE_OPENBSD 1" >>confdefs.h rm -f src/device.c; ln -sf bsd/device.c src/device.c ;; *netbsd*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_NETBSD 1 -_ACEOF +$as_echo "#define HAVE_NETBSD 1" >>confdefs.h rm -f src/device.c; ln -sf bsd/device.c src/device.c ;; *bsd*) - { echo "$as_me:$LINENO: WARNING: \"Unknown BSD variant" >&5 -echo "$as_me: WARNING: \"Unknown BSD variant" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"Unknown BSD variant" >&5 +$as_echo "$as_me: WARNING: \"Unknown BSD variant" >&2;} -cat >>confdefs.h <<\_ACEOF -#define HAVE_BSD 1 -_ACEOF +$as_echo "#define HAVE_BSD 1" >>confdefs.h rm -f src/device.c; ln -sf bsd/device.c src/device.c ;; *cygwin*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_CYGWIN 1 -_ACEOF +$as_echo "#define HAVE_CYGWIN 1" >>confdefs.h rm -f src/device.c; ln -sf cygwin/device.c src/device.c ;; *mingw*) -cat >>confdefs.h <<\_ACEOF -#define HAVE_MINGW 1 -_ACEOF +$as_echo "#define HAVE_MINGW 1" >>confdefs.h rm -f src/device.c; cp -f src/mingw/device.c src/device.c LIBS="$LIBS -lws2_32" ;; *) - { { echo "$as_me:$LINENO: error: \"Unknown operating system.\"" >&5 -echo "$as_me: error: \"Unknown operating system.\"" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "\"Unknown operating system.\"" "$LINENO" 5 ;; esac +# Check whether --enable-tunemu was given. +if test "${enable_tunemu+set}" = set; then : + enableval=$enable_tunemu; +$as_echo "#define ENABLE_TUNEMU 1" >>confdefs.h + + tunemu=true + + +fi + + + +# Check whether --with-windows2000 was given. +if test "${with_windows2000+set}" = set; then : + withval=$with_windows2000; +$as_echo "#define WITH_WINDOWS2000 1" >>confdefs.h + + +fi + + + if test "$tunemu" = true; then + TUNEMU_TRUE= + TUNEMU_FALSE='#' +else + TUNEMU_TRUE='#' + TUNEMU_FALSE= +fi + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -6500,12 +4805,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -6513,8 +4819,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -6537,12 +4843,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -6556,179 +4862,12 @@ fi - -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -6743,47 +4882,23 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no + ac_cv_header_stdc=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + $EGREP "memchr" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -6793,18 +4908,14 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : + $EGREP "free" >/dev/null 2>&1; then : + else ac_cv_header_stdc=no fi @@ -6814,14 +4925,10 @@ fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -6848,455 +4955,81 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : +if ac_fn_c_try_run "$LINENO"; then : + else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF +$as_echo "#define STDC_HEADERS 1" >>confdefs.h fi -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - for ac_header in 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 -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done - - - - - - - - - - for ac_header in 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 -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include \"have.h\" - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done - - - for ac_header in netinet/if_ether.h netinet/ip.h netinet/ip6.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include \"have.h\" - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done - - - for ac_header in netinet/tcp.h netinet/ip_icmp.h netinet/icmp6.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include \"have.h\" - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -7304,16 +5037,12 @@ fi done -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7373,53 +5102,27 @@ main () return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no + ac_cv_c_const=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF +$as_echo "#define const /**/" >>confdefs.h fi -{ echo "$as_me:$LINENO: checking for working volatile" >&5 -echo $ECHO_N "checking for working volatile... $ECHO_C" >&6; } -if test "${ac_cv_c_volatile+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if test "${ac_cv_c_volatile+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7433,98 +5136,24 @@ return !x && !y; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_volatile=no + ac_cv_c_volatile=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5 -echo "${ECHO_T}$ac_cv_c_volatile" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then -cat >>confdefs.h <<\_ACEOF -#define volatile -_ACEOF +$as_echo "#define volatile /**/" >>confdefs.h fi -{ echo "$as_me:$LINENO: checking for pid_t" >&5 -echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } -if test "${ac_cv_type_pid_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef pid_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_pid_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = x""yes; then : - ac_cv_type_pid_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 -echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } -if test $ac_cv_type_pid_t = yes; then - : else cat >>confdefs.h <<_ACEOF @@ -7533,61 +5162,9 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } -if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef size_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_size_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : - ac_cv_type_size_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } -if test $ac_cv_type_size_t = yes; then - : else cat >>confdefs.h <<_ACEOF @@ -7596,16 +5173,12 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if test "${ac_cv_header_time+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7620,53 +5193,27 @@ return 0; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no + ac_cv_header_time=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi -{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test "${ac_cv_struct_tm+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7676,166 +5223,66 @@ main () { struct tm tm; int *p = &tm.tm_sec; - return !p; + return !p; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_struct_tm=sys/time.h + ac_cv_struct_tm=sys/time.h fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi - { echo "$as_me:$LINENO: checking for working __malloc__ attribute" >&5 -echo $ECHO_N "checking for working __malloc__ attribute... $ECHO_C" >&6; } -if test "${tinc_cv_attribute___malloc__+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working __malloc__ attribute" >&5 +$as_echo_n "checking for working __malloc__ attribute... " >&6; } +if test "${tinc_cv_attribute___malloc__+set}" = set; then : + $as_echo_n "(cached) " >&6 else tempcflags="$CFLAGS" CFLAGS="$CFLAGS -Wall -Werror" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void test(void) __attribute__ ((__malloc__)); void test(void) { return; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : tinc_cv_attribute___malloc__=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - tinc_cv_attribute___malloc__=no + tinc_cv_attribute___malloc__=no fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$tempcflags" fi -{ echo "$as_me:$LINENO: result: $tinc_cv_attribute___malloc__" >&5 -echo "${ECHO_T}$tinc_cv_attribute___malloc__" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tinc_cv_attribute___malloc__" >&5 +$as_echo "$tinc_cv_attribute___malloc__" >&6; } if test ${tinc_cv_attribute___malloc__} = no; then -cat >>confdefs.h <<\_ACEOF -#define __malloc__ -_ACEOF +$as_echo "#define __malloc__ /**/" >>confdefs.h fi -{ echo "$as_me:$LINENO: checking for socklen_t" >&5 -echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; } -if test "${ac_cv_type_socklen_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include \"have.h\" - -typedef socklen_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_socklen_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_socklen_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 -echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; } -if test $ac_cv_type_socklen_t = yes; then +" +if test "x$ac_cv_type_socklen_t" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SOCKLEN_T 1 @@ -7843,62 +5290,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct ether_header" >&5 -echo $ECHO_N "checking for struct ether_header... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_ether_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct ether_header" "ac_cv_type_struct_ether_header" "#include \"have.h\" - -typedef struct ether_header ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_ether_header=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_ether_header=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_header" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ether_header" >&6; } -if test $ac_cv_type_struct_ether_header = yes; then +" +if test "x$ac_cv_type_struct_ether_header" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ETHER_HEADER 1 @@ -7906,62 +5301,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct arphdr" >&5 -echo $ECHO_N "checking for struct arphdr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_arphdr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct arphdr" "ac_cv_type_struct_arphdr" "#include \"have.h\" - -typedef struct arphdr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_arphdr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_arphdr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_arphdr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_arphdr" >&6; } -if test $ac_cv_type_struct_arphdr = yes; then +" +if test "x$ac_cv_type_struct_arphdr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ARPHDR 1 @@ -7969,62 +5312,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct ether_arp" >&5 -echo $ECHO_N "checking for struct ether_arp... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_ether_arp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct ether_arp" "ac_cv_type_struct_ether_arp" "#include \"have.h\" - -typedef struct ether_arp ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_ether_arp=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_ether_arp=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_arp" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ether_arp" >&6; } -if test $ac_cv_type_struct_ether_arp = yes; then +" +if test "x$ac_cv_type_struct_ether_arp" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ETHER_ARP 1 @@ -8032,62 +5323,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct in_addr" >&5 -echo $ECHO_N "checking for struct in_addr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_in_addr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct in_addr" "ac_cv_type_struct_in_addr" "#include \"have.h\" - -typedef struct in_addr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_in_addr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_in_addr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_in_addr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_in_addr" >&6; } -if test $ac_cv_type_struct_in_addr = yes; then +" +if test "x$ac_cv_type_struct_in_addr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_IN_ADDR 1 @@ -8095,62 +5334,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct addrinfo" >&5 -echo $ECHO_N "checking for struct addrinfo... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_addrinfo+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct addrinfo" "ac_cv_type_struct_addrinfo" "#include \"have.h\" - -typedef struct addrinfo ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_addrinfo=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_addrinfo=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_addrinfo" >&5 -echo "${ECHO_T}$ac_cv_type_struct_addrinfo" >&6; } -if test $ac_cv_type_struct_addrinfo = yes; then +" +if test "x$ac_cv_type_struct_addrinfo" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ADDRINFO 1 @@ -8158,62 +5345,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct ip" >&5 -echo $ECHO_N "checking for struct ip... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_ip+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct ip" "ac_cv_type_struct_ip" "#include \"have.h\" - -typedef struct ip ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_ip=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_ip=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ip" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ip" >&6; } -if test $ac_cv_type_struct_ip = yes; then +" +if test "x$ac_cv_type_struct_ip" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_IP 1 @@ -8221,62 +5356,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct icmp" >&5 -echo $ECHO_N "checking for struct icmp... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_icmp+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct icmp" "ac_cv_type_struct_icmp" "#include \"have.h\" - -typedef struct icmp ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_icmp=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_icmp=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_icmp" >&5 -echo "${ECHO_T}$ac_cv_type_struct_icmp" >&6; } -if test $ac_cv_type_struct_icmp = yes; then +" +if test "x$ac_cv_type_struct_icmp" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ICMP 1 @@ -8284,62 +5367,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct in6_addr" >&5 -echo $ECHO_N "checking for struct in6_addr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_in6_addr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct in6_addr" "ac_cv_type_struct_in6_addr" "#include \"have.h\" - -typedef struct in6_addr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_in6_addr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_in6_addr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_in6_addr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_in6_addr" >&6; } -if test $ac_cv_type_struct_in6_addr = yes; then +" +if test "x$ac_cv_type_struct_in6_addr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_IN6_ADDR 1 @@ -8347,62 +5378,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct sockaddr_in6" >&5 -echo $ECHO_N "checking for struct sockaddr_in6... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_sockaddr_in6+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "#include \"have.h\" - -typedef struct sockaddr_in6 ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_sockaddr_in6=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_sockaddr_in6=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_sockaddr_in6" >&5 -echo "${ECHO_T}$ac_cv_type_struct_sockaddr_in6" >&6; } -if test $ac_cv_type_struct_sockaddr_in6 = yes; then +" +if test "x$ac_cv_type_struct_sockaddr_in6" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_SOCKADDR_IN6 1 @@ -8410,62 +5389,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct ip6_hdr" >&5 -echo $ECHO_N "checking for struct ip6_hdr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_ip6_hdr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct ip6_hdr" "ac_cv_type_struct_ip6_hdr" "#include \"have.h\" - -typedef struct ip6_hdr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_ip6_hdr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_ip6_hdr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ip6_hdr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_ip6_hdr" >&6; } -if test $ac_cv_type_struct_ip6_hdr = yes; then +" +if test "x$ac_cv_type_struct_ip6_hdr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_IP6_HDR 1 @@ -8473,62 +5400,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct icmp6_hdr" >&5 -echo $ECHO_N "checking for struct icmp6_hdr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_icmp6_hdr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct icmp6_hdr" "ac_cv_type_struct_icmp6_hdr" "#include \"have.h\" - -typedef struct icmp6_hdr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_icmp6_hdr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_icmp6_hdr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_icmp6_hdr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_icmp6_hdr" >&6; } -if test $ac_cv_type_struct_icmp6_hdr = yes; then +" +if test "x$ac_cv_type_struct_icmp6_hdr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ICMP6_HDR 1 @@ -8536,62 +5411,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct nd_neighbor_solicit" >&5 -echo $ECHO_N "checking for struct nd_neighbor_solicit... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_nd_neighbor_solicit+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct nd_neighbor_solicit" "ac_cv_type_struct_nd_neighbor_solicit" "#include \"have.h\" - -typedef struct nd_neighbor_solicit ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_nd_neighbor_solicit=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_nd_neighbor_solicit=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_nd_neighbor_solicit" >&5 -echo "${ECHO_T}$ac_cv_type_struct_nd_neighbor_solicit" >&6; } -if test $ac_cv_type_struct_nd_neighbor_solicit = yes; then +" +if test "x$ac_cv_type_struct_nd_neighbor_solicit" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ND_NEIGHBOR_SOLICIT 1 @@ -8599,62 +5422,10 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for struct nd_opt_hdr" >&5 -echo $ECHO_N "checking for struct nd_opt_hdr... $ECHO_C" >&6; } -if test "${ac_cv_type_struct_nd_opt_hdr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include "have.h" +ac_fn_c_check_type "$LINENO" "struct nd_opt_hdr" "ac_cv_type_struct_nd_opt_hdr" "#include \"have.h\" - -typedef struct nd_opt_hdr ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_struct_nd_opt_hdr=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_struct_nd_opt_hdr=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_nd_opt_hdr" >&5 -echo "${ECHO_T}$ac_cv_type_struct_nd_opt_hdr" >&6; } -if test $ac_cv_type_struct_nd_opt_hdr = yes; then +" +if test "x$ac_cv_type_struct_nd_opt_hdr" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_ND_OPT_HDR 1 @@ -8664,19 +5435,15 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if test "${ac_cv_func_memcmp_working+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -8711,42 +5478,18 @@ main () return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no + ac_cv_func_memcmp_working=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" @@ -8756,16 +5499,12 @@ esac # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! -{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } -if test "${ac_cv_working_alloca_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if test "${ac_cv_working_alloca_h+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -8777,55 +5516,28 @@ char *p = (char *) alloca (2 * sizeof (int)); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_working_alloca_h=no + ac_cv_working_alloca_h=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -{ echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } -if test "${ac_cv_func_alloca_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if test "${ac_cv_func_alloca_works+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca @@ -8857,43 +5569,20 @@ char *p = (char *) alloca (1); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_alloca_works=no + ac_cv_func_alloca_works=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions @@ -8903,21 +5592,15 @@ else ALLOCA=\${LIBOBJDIR}alloca.$ac_objext -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF +$as_echo "#define C_ALLOCA 1" >>confdefs.h -{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } -if test "${ac_cv_os_cray+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if test "${ac_cv_os_cray+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray @@ -8927,7 +5610,7 @@ wenotbecray _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then + $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no @@ -8935,94 +5618,14 @@ fi rm -f conftest* fi -{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func @@ -9034,19 +5637,15 @@ fi done fi -{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } -if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if test "${ac_cv_c_stack_direction+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -9069,43 +5668,18 @@ main () return find_stack_direction () < 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_stack_direction=-1 + ac_cv_c_stack_direction=-1 fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF @@ -9113,16 +5687,12 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if test "${ac_cv_type_signal+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -9135,307 +5705,55 @@ return *(signal (0, 0)) (0) == 1; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_signal=void + ac_cv_type_signal=void fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF - - - - - - - - - - - - - - - - - - - - for ac_func in asprintf daemon fchmod flock ftime fork get_current_dir_name gettimeofday mlockall putenv random select strdup strerror strsignal strtol system unsetenv vsyslog writev -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done - for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_STDLIB_H 1 _ACEOF fi done -{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 -echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } -if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 +$as_echo_n "checking for GNU libc compatible malloc... " >&6; } +if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include @@ -9451,52 +5769,24 @@ return ! malloc (0); return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_malloc_0_nonnull=no + ac_cv_func_malloc_0_nonnull=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } -if test $ac_cv_func_malloc_0_nonnull = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 +$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } +if test $ac_cv_func_malloc_0_nonnull = yes; then : -cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 1 -_ACEOF +$as_echo "#define HAVE_MALLOC 1" >>confdefs.h else - cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 0 -_ACEOF + $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; @@ -9505,167 +5795,32 @@ _ACEOF esac -cat >>confdefs.h <<\_ACEOF -#define malloc rpl_malloc -_ACEOF +$as_echo "#define malloc rpl_malloc" >>confdefs.h fi - - for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_STDLIB_H 1 _ACEOF fi done -{ echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5 -echo $ECHO_N "checking for GNU libc compatible realloc... $ECHO_C" >&6; } -if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 +$as_echo_n "checking for GNU libc compatible realloc... " >&6; } +if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then + if test "$cross_compiling" = yes; then : ac_cv_func_realloc_0_nonnull=no else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include @@ -9681,52 +5836,24 @@ return ! realloc (0, 0); return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_realloc_0_nonnull=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_realloc_0_nonnull=no + ac_cv_func_realloc_0_nonnull=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_realloc_0_nonnull" >&6; } -if test $ac_cv_func_realloc_0_nonnull = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 +$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; } +if test $ac_cv_func_realloc_0_nonnull = yes; then : -cat >>confdefs.h <<\_ACEOF -#define HAVE_REALLOC 1 -_ACEOF +$as_echo "#define HAVE_REALLOC 1" >>confdefs.h else - cat >>confdefs.h <<\_ACEOF -#define HAVE_REALLOC 0 -_ACEOF + $as_echo "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; @@ -9735,114 +5862,26 @@ _ACEOF esac -cat >>confdefs.h <<\_ACEOF -#define realloc rpl_realloc -_ACEOF +$as_echo "#define realloc rpl_realloc" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = x""yes; then : -{ echo "$as_me:$LINENO: checking for socket" >&5 -echo $ECHO_N "checking for socket... $ECHO_C" >&6; } -if test "${ac_cv_func_socket+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define socket to an innocuous variant, in case declares socket. - For example, HP-UX 11i declares gettimeofday. */ -#define socket innocuous_socket - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char socket (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef socket - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char socket (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_socket || defined __stub___socket -choke me -#endif - -int -main () -{ -return socket (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_socket=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_socket=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_socket" >&5 -echo "${ECHO_T}$ac_cv_func_socket" >&6; } -if test $ac_cv_func_socket = yes; then - : else - -{ echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 -echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } -if test "${ac_cv_lib_socket_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 +$as_echo_n "checking for connect in -lsocket... " >&6; } +if test "${ac_cv_lib_socket_connect+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -9860,39 +5899,18 @@ return connect (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_socket_connect=no + ac_cv_lib_socket_connect=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } -if test $ac_cv_lib_socket_connect = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 +$as_echo "$ac_cv_lib_socket_connect" >&6; } +if test "x$ac_cv_lib_socket_connect" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSOCKET 1 _ACEOF @@ -9904,104 +5922,19 @@ fi fi -{ echo "$as_me:$LINENO: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } -if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyname innocuous_gethostbyname +ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = x""yes; then : -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gethostbyname (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyname - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_gethostbyname || defined __stub___gethostbyname -choke me -#endif - -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_gethostbyname=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } -if test $ac_cv_func_gethostbyname = yes; then - : else - -{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10019,39 +5952,18 @@ return gethostbyname (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_nsl_gethostbyname=no + ac_cv_lib_nsl_gethostbyname=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } -if test $ac_cv_lib_nsl_gethostbyname = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNSL 1 _ACEOF @@ -10064,103 +5976,54 @@ fi fi +ac_fn_c_check_decl "$LINENO" "freeaddrinfo" "ac_cv_have_decl_freeaddrinfo" "#include \"have.h\" - - - - -for ac_func in freeaddrinfo gai_strerror getaddrinfo getnameinfo inet_aton -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +" +if test "x$ac_cv_have_decl_freeaddrinfo" = x""yes; then : + ac_have_decl=1 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FREEADDRINFO $ac_have_decl _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func +ac_fn_c_check_decl "$LINENO" "gai_strerror" "ac_cv_have_decl_gai_strerror" "#include \"have.h\" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" +" +if test "x$ac_cv_have_decl_gai_strerror" = x""yes; then : + ac_have_decl=1 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GAI_STRERROR $ac_have_decl _ACEOF +ac_fn_c_check_decl "$LINENO" "getaddrinfo" "ac_cv_have_decl_getaddrinfo" "#include \"have.h\" +" +if test "x$ac_cv_have_decl_getaddrinfo" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 fi -done + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETADDRINFO $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "getnameinfo" "ac_cv_have_decl_getnameinfo" "#include \"have.h\" + +" +if test "x$ac_cv_have_decl_getnameinfo" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETNAMEINFO $ac_have_decl +_ACEOF cat >confcache <<\_ACEOF @@ -10190,12 +6053,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -10203,8 +6067,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -10227,12 +6091,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -10241,7 +6105,7 @@ rm -f confcache # Check whether --with-openssl was given. -if test "${with_openssl+set}" = set; then +if test "${with_openssl+set}" = set; then : withval=$with_openssl; openssl="$withval" CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" @@ -10251,7 +6115,7 @@ fi # Check whether --with-openssl-include was given. -if test "${with_openssl_include+set}" = set; then +if test "${with_openssl_include+set}" = set; then : withval=$with_openssl_include; openssl_include="$withval" CPPFLAGS="$CPPFLAGS -I$withval" @@ -10260,159 +6124,25 @@ fi # Check whether --with-openssl-lib was given. -if test "${with_openssl_lib+set}" = set; then +if test "${with_openssl_lib+set}" = set; then : withval=$with_openssl_lib; openssl_lib="$withval" LDFLAGS="$LDFLAGS -L$withval" fi - - - - - - - -for ac_header in openssl/evp.h openssl/rsa.h openssl/rand.h openssl/err.h openssl/sha.h openssl/pem.h openssl/engine.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then + for ac_header in openssl/evp.h openssl/rsa.h openssl/rand.h openssl/err.h openssl/sha.h openssl/pem.h openssl/engine.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else - { { echo "$as_me:$LINENO: error: OpenSSL header files not found." >&5 -echo "$as_me: error: OpenSSL header files not found." >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "OpenSSL header files not found." "$LINENO" 5; break fi @@ -10421,18 +6151,14 @@ done case $host_os in *mingw*) - { echo "$as_me:$LINENO: checking for SHA1_version in -lcrypto" >&5 -echo $ECHO_N "checking for SHA1_version in -lcrypto... $ECHO_C" >&6; } -if test "${ac_cv_lib_crypto_SHA1_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHA1_version in -lcrypto" >&5 +$as_echo_n "checking for SHA1_version in -lcrypto... " >&6; } +if test "${ac_cv_lib_crypto_SHA1_version+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10450,61 +6176,34 @@ return SHA1_version (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_SHA1_version=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_crypto_SHA1_version=no + ac_cv_lib_crypto_SHA1_version=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SHA1_version" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_SHA1_version" >&6; } -if test $ac_cv_lib_crypto_SHA1_version = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_SHA1_version" >&5 +$as_echo "$ac_cv_lib_crypto_SHA1_version" >&6; } +if test "x$ac_cv_lib_crypto_SHA1_version" = x""yes; then : LIBS="$LIBS -lcrypto -lgdi32" else - { { echo "$as_me:$LINENO: error: OpenSSL libraries not found." >&5 -echo "$as_me: error: OpenSSL libraries not found." >&2;} - { (exit 1); exit 1; }; } + as_fn_error "OpenSSL libraries not found." "$LINENO" 5 fi ;; *) - { echo "$as_me:$LINENO: checking for SHA1_version in -lcrypto" >&5 -echo $ECHO_N "checking for SHA1_version in -lcrypto... $ECHO_C" >&6; } -if test "${ac_cv_lib_crypto_SHA1_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHA1_version in -lcrypto" >&5 +$as_echo_n "checking for SHA1_version in -lcrypto... " >&6; } +if test "${ac_cv_lib_crypto_SHA1_version+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10522,144 +6221,37 @@ return SHA1_version (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_crypto_SHA1_version=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_crypto_SHA1_version=no + ac_cv_lib_crypto_SHA1_version=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SHA1_version" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_SHA1_version" >&6; } -if test $ac_cv_lib_crypto_SHA1_version = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_SHA1_version" >&5 +$as_echo "$ac_cv_lib_crypto_SHA1_version" >&6; } +if test "x$ac_cv_lib_crypto_SHA1_version" = x""yes; then : LIBS="$LIBS -lcrypto" else - { { echo "$as_me:$LINENO: error: OpenSSL libraries not found." >&5 -echo "$as_me: error: OpenSSL libraries not found." >&2;} - { (exit 1); exit 1; }; } + as_fn_error "OpenSSL libraries not found." "$LINENO" 5 fi - { echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_dlopen || defined __stub___dlopen -choke me -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_dlopen=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then - : -else - { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -10677,44 +6269,21 @@ return dlopen (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : LIBS="$LIBS -ldl" else - { { echo "$as_me:$LINENO: error: OpenSSL depends on libdl." >&5 -echo "$as_me: error: OpenSSL depends on libdl." >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "OpenSSL depends on libdl." "$LINENO" 5; break fi @@ -10724,173 +6293,36 @@ fi ;; esac - - -for ac_func in RAND_pseudo_bytes EVP_EncryptInit_ex -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then + for ac_func in RAND_pseudo_bytes EVP_EncryptInit_ex +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else - { { echo "$as_me:$LINENO: error: Missing OpenSSL functionality, make sure you have installed the latest version." >&5 -echo "$as_me: error: Missing OpenSSL functionality, make sure you have installed the latest version." >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "Missing OpenSSL functionality, make sure you have installed the latest version." "$LINENO" 5; break fi done - { echo "$as_me:$LINENO: checking whether OpenSSL_add_all_algorithms is declared" >&5 -echo $ECHO_N "checking whether OpenSSL_add_all_algorithms is declared... $ECHO_C" >&6; } -if test "${ac_cv_have_decl_OpenSSL_add_all_algorithms+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + ac_fn_c_check_decl "$LINENO" "OpenSSL_add_all_algorithms" "ac_cv_have_decl_OpenSSL_add_all_algorithms" "#include + +" +if test "x$ac_cv_have_decl_OpenSSL_add_all_algorithms" = x""yes; then : + else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - - -int -main () -{ -#ifndef OpenSSL_add_all_algorithms - (void) OpenSSL_add_all_algorithms; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_have_decl_OpenSSL_add_all_algorithms=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_have_decl_OpenSSL_add_all_algorithms=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_OpenSSL_add_all_algorithms" >&5 -echo "${ECHO_T}$ac_cv_have_decl_OpenSSL_add_all_algorithms" >&6; } -if test $ac_cv_have_decl_OpenSSL_add_all_algorithms = yes; then - : -else - { { echo "$as_me:$LINENO: error: Missing OpenSSL functionality, make sure you have installed the latest version." >&5 -echo "$as_me: error: Missing OpenSSL functionality, make sure you have installed the latest version." >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "Missing OpenSSL functionality, make sure you have installed the latest version." "$LINENO" 5; break fi # Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then +if test "${with_zlib+set}" = set; then : withval=$with_zlib; zlib="$withval" CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" @@ -10900,7 +6332,7 @@ fi # Check whether --with-zlib-include was given. -if test "${with_zlib_include+set}" = set; then +if test "${with_zlib_include+set}" = set; then : withval=$with_zlib_include; zlib_include="$withval" CPPFLAGS="$CPPFLAGS -I$withval" @@ -10909,171 +6341,37 @@ fi # Check whether --with-zlib-lib was given. -if test "${with_zlib_lib+set}" = set; then +if test "${with_zlib_lib+set}" = set; then : withval=$with_zlib_lib; zlib_lib="$withval" LDFLAGS="$LDFLAGS -L$withval" fi - -for ac_header in zlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then + for ac_header in zlib.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_ZLIB_H 1 _ACEOF else - { { echo "$as_me:$LINENO: error: \"zlib header files not found.\"" >&5 -echo "$as_me: error: \"zlib header files not found.\"" >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "\"zlib header files not found.\"" "$LINENO" 5; break fi done - { echo "$as_me:$LINENO: checking for compress2 in -lz" >&5 -echo $ECHO_N "checking for compress2 in -lz... $ECHO_C" >&6; } -if test "${ac_cv_lib_z_compress2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress2 in -lz" >&5 +$as_echo_n "checking for compress2 in -lz... " >&6; } +if test "${ac_cv_lib_z_compress2+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11091,44 +6389,21 @@ return compress2 (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_compress2=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_z_compress2=no + ac_cv_lib_z_compress2=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_compress2" >&5 -echo "${ECHO_T}$ac_cv_lib_z_compress2" >&6; } -if test $ac_cv_lib_z_compress2 = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress2" >&5 +$as_echo "$ac_cv_lib_z_compress2" >&6; } +if test "x$ac_cv_lib_z_compress2" = x""yes; then : LIBS="$LIBS -lz" else - { { echo "$as_me:$LINENO: error: \"zlib libraries not found.\"" >&5 -echo "$as_me: error: \"zlib libraries not found.\"" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "\"zlib libraries not found.\"" "$LINENO" 5 fi @@ -11136,7 +6411,7 @@ fi # Check whether --with-lzo was given. -if test "${with_lzo+set}" = set; then +if test "${with_lzo+set}" = set; then : withval=$with_lzo; lzo="$withval" CPPFLAGS="$CPPFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" @@ -11146,7 +6421,7 @@ fi # Check whether --with-lzo-include was given. -if test "${with_lzo_include+set}" = set; then +if test "${with_lzo_include+set}" = set; then : withval=$with_lzo_include; lzo_include="$withval" CPPFLAGS="$CPPFLAGS -I$withval" @@ -11155,25 +6430,21 @@ fi # Check whether --with-lzo-lib was given. -if test "${with_lzo_lib+set}" = set; then +if test "${with_lzo_lib+set}" = set; then : withval=$with_lzo_lib; lzo_lib="$withval" LDFLAGS="$LDFLAGS -L$withval" fi - { echo "$as_me:$LINENO: checking for lzo1x_1_compress in -llzo2" >&5 -echo $ECHO_N "checking for lzo1x_1_compress in -llzo2... $ECHO_C" >&6; } -if test "${ac_cv_lib_lzo2_lzo1x_1_compress+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo1x_1_compress in -llzo2" >&5 +$as_echo_n "checking for lzo1x_1_compress in -llzo2... " >&6; } +if test "${ac_cv_lib_lzo2_lzo1x_1_compress+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llzo2 $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11191,53 +6462,28 @@ return lzo1x_1_compress (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lzo2_lzo1x_1_compress=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_lzo2_lzo1x_1_compress=no + ac_cv_lib_lzo2_lzo1x_1_compress=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_lzo2_lzo1x_1_compress" >&5 -echo "${ECHO_T}$ac_cv_lib_lzo2_lzo1x_1_compress" >&6; } -if test $ac_cv_lib_lzo2_lzo1x_1_compress = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzo2_lzo1x_1_compress" >&5 +$as_echo "$ac_cv_lib_lzo2_lzo1x_1_compress" >&6; } +if test "x$ac_cv_lib_lzo2_lzo1x_1_compress" = x""yes; then : LIBS="$LIBS -llzo2" else - { echo "$as_me:$LINENO: checking for lzo1x_1_compress in -llzo" >&5 -echo $ECHO_N "checking for lzo1x_1_compress in -llzo... $ECHO_C" >&6; } -if test "${ac_cv_lib_lzo_lzo1x_1_compress+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo1x_1_compress in -llzo" >&5 +$as_echo_n "checking for lzo1x_1_compress in -llzo... " >&6; } +if test "${ac_cv_lib_lzo_lzo1x_1_compress+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llzo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. @@ -11255,44 +6501,21 @@ return lzo1x_1_compress (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lzo_lzo1x_1_compress=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_lzo_lzo1x_1_compress=no + ac_cv_lib_lzo_lzo1x_1_compress=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_lzo_lzo1x_1_compress" >&5 -echo "${ECHO_T}$ac_cv_lib_lzo_lzo1x_1_compress" >&6; } -if test $ac_cv_lib_lzo_lzo1x_1_compress = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzo_lzo1x_1_compress" >&5 +$as_echo "$ac_cv_lib_lzo_lzo1x_1_compress" >&6; } +if test "x$ac_cv_lib_lzo_lzo1x_1_compress" = x""yes; then : LIBS="$LIBS -llzo" else - { { echo "$as_me:$LINENO: error: \"lzo libraries not found.\"" >&5 -echo "$as_me: error: \"lzo libraries not found.\"" >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "\"lzo libraries not found.\"" "$LINENO" 5; break fi @@ -11300,432 +6523,40 @@ fi fi - -for ac_header in lzo/lzo1x.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then + for ac_header in lzo/lzo1x.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "lzo/lzo1x.h" "ac_cv_header_lzo_lzo1x_h" "$ac_includes_default" +if test "x$ac_cv_header_lzo_lzo1x_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_LZO_LZO1X_H 1 _ACEOF -cat >>confdefs.h <<\_ACEOF -#define LZO1X_H -_ACEOF +$as_echo "#define LZO1X_H " >>confdefs.h else - -for ac_header in lzo2/lzo1x.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then + for ac_header in lzo2/lzo1x.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "lzo2/lzo1x.h" "ac_cv_header_lzo2_lzo1x_h" "$ac_includes_default" +if test "x$ac_cv_header_lzo2_lzo1x_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_LZO2_LZO1X_H 1 _ACEOF -cat >>confdefs.h <<\_ACEOF -#define LZO1X_H -_ACEOF +$as_echo "#define LZO1X_H " >>confdefs.h else - -for ac_header in lzo1x.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then + for ac_header in lzo1x.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "lzo1x.h" "ac_cv_header_lzo1x_h" "$ac_includes_default" +if test "x$ac_cv_header_lzo1x_h" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define HAVE_LZO1X_H 1 _ACEOF -cat >>confdefs.h <<\_ACEOF -#define LZO1X_H -_ACEOF +$as_echo "#define LZO1X_H " >>confdefs.h else - { { echo "$as_me:$LINENO: error: \"lzo header files not found.\"" >&5 -echo "$as_me: error: \"lzo header files not found.\"" >&2;} - { (exit 1); exit 1; }; }; break + as_fn_error "\"lzo header files not found.\"" "$LINENO" 5; break fi @@ -11744,22 +6575,9 @@ done # Check whether --enable-jumbograms was given. -if test "${enable_jumbograms+set}" = set; then +if test "${enable_jumbograms+set}" = set; then : enableval=$enable_jumbograms; -cat >>confdefs.h <<\_ACEOF -#define ENABLE_JUMBOGRAMS 1 -_ACEOF - - -fi - - -# Check whether --enable-tracing was given. -if test "${enable_tracing+set}" = set; then - enableval=$enable_tracing; -cat >>confdefs.h <<\_ACEOF -#define ENABLE_TRACING 1 -_ACEOF +$as_echo "#define ENABLE_JUMBOGRAMS 1" >>confdefs.h fi @@ -11767,7 +6585,7 @@ fi -ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile lib/Makefile po/Makefile.in m4/Makefile" +ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile lib/Makefile m4/Makefile" cat >confcache <<\_ACEOF @@ -11797,12 +6615,13 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done @@ -11810,8 +6629,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" @@ -11834,12 +6653,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -11855,52 +6674,50 @@ ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } + as_fn_error "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } +if test -z "${TUNEMU_TRUE}" && test -z "${TUNEMU_FALSE}"; then + as_fn_error "conditional \"TUNEMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : ${CONFIG_STATUS=./config.status} +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -11910,59 +6727,79 @@ cat >$CONFIG_STATUS <<_ACEOF debug=false ac_cs_recheck=false ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; esac - fi - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi @@ -11971,20 +6808,18 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. -case $0 in +case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done IFS=$as_save_IFS ;; @@ -11995,32 +6830,111 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 fi -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + -# Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -12034,13 +6948,17 @@ else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -12055,104 +6973,103 @@ echo X/"$0" | } s/.*/./; q'` -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in +case `echo -n x` in #((((( -n*) - case `echo 'x\c'` in + case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir + mkdir conf$$.dir 2>/dev/null fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false @@ -12169,12 +7086,12 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else - case $1 in - -*)set "./$1";; + case $1 in #( + -*)set "./$1";; esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' @@ -12189,13 +7106,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -# Save the log message, to keep $[0] and so on meaningful, and to +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was +generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -12208,7 +7131,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -12216,22 +7148,24 @@ config_commands="$ac_config_commands" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -12242,16 +7176,16 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to the package provider." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.64, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2009 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -12259,11 +7193,12 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do @@ -12285,34 +7220,38 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; - *) ac_config_targets="$ac_config_targets $1" + *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac @@ -12327,60 +7266,51 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -12407,7 +7337,7 @@ $debug || trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 + trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. @@ -12418,215 +7348,140 @@ $debug || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF - +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim -MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim -MAINT!$MAINT$ac_delim -MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim -USE_NLS!$USE_NLS$ac_delim -MSGFMT!$MSGFMT$ac_delim -GMSGFMT!$GMSGFMT$ac_delim -XGETTEXT!$XGETTEXT$ac_delim -MSGMERGE!$MSGMERGE$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -LIBICONV!$LIBICONV$ac_delim -LTLIBICONV!$LTLIBICONV$ac_delim -INTLLIBS!$INTLLIBS$ac_delim -LIBINTL!$LIBINTL$ac_delim -LTLIBINTL!$LTLIBINTL$ac_delim -_ACEOF + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK _ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -POSUB!$POSUB$ac_delim -CPP!$CPP$ac_delim -LN_S!$LN_S$ac_delim -RANLIB!$RANLIB$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -ALLOCA!$ALLOCA$ac_delim -INCLUDES!$INCLUDES$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 10; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty @@ -12642,20 +7497,128 @@ s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -12683,26 +7646,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac @@ -12712,7 +7683,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -12730,55 +7701,15 @@ echo X"$ac_file" | q } s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } + as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -12823,12 +7754,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -12836,36 +7767,37 @@ case `sed -n '/datarootdir/ { /@docdir@/p /@infodir@/p /@localedir@/p -/@mandir@/p -' $ac_file_inputs` in +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; + s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -12876,121 +7808,50 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -13005,7 +7866,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -13025,139 +7886,40 @@ echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in - "default-1":C) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -13175,33 +7937,33 @@ echo X"$mf" | q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -13219,62 +7981,25 @@ echo X"$file" | q } s/.*/./; q'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" done -done +} ;; esac done # for ac_tag -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -13294,6 +8019,10 @@ if test "$no_create" != yes; then exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff --git a/configure.in b/configure.in index de70e02..efe9a8a 100644 --- a/configure.in +++ b/configure.in @@ -1,17 +1,12 @@ 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) +AM_INIT_AUTOMAKE(tinc, 1.0.10) 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. @@ -21,7 +16,7 @@ AC_DEFINE([__USE_BSD], 1, [Enable BSD extensions]) ALL_LINGUAS="nl" dnl Checks for programs. -AC_PROG_CC +AC_PROG_CC_C99 AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S @@ -29,7 +24,7 @@ AC_PROG_RANLIB dnl Check and set OS -#AC_CANONICAL_HOST +AC_CANONICAL_HOST case $host_os in *linux*) @@ -75,6 +70,20 @@ case $host_os in ;; esac +AC_ARG_ENABLE(tunemu, + AS_HELP_STRING([--enable-tunemu], [enable support for the tunemu driver]), + [ AC_DEFINE(ENABLE_TUNEMU, 1, [Support for tunemu]) + tunemu=true + ] +) + +AC_ARG_WITH(windows2000, + AS_HELP_STRING([--with-windows2000], [compile with support for Windows 2000. This disables support for tunneling over existing IPv6 networks.]), + [AC_DEFINE(WITH_WINDOWS2000, 1, [Compile with support for Windows 2000])] +) + +AM_CONDITIONAL(TUNEMU, test "$tunemu" = true) + AC_CACHE_SAVE if test -d /sw/include ; then @@ -134,7 +143,7 @@ AC_CHECK_FUNC(gethostbyname, [], [ AC_CHECK_LIB(nsl, gethostbyname) ]) -AC_CHECK_FUNCS([freeaddrinfo gai_strerror getaddrinfo getnameinfo inet_aton], +AC_CHECK_DECLS([freeaddrinfo, gai_strerror, getaddrinfo, getnameinfo], [], [], [#include "have.h"] ) @@ -152,14 +161,8 @@ AC_ARG_ENABLE(jumbograms, [ 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_CONFIG_FILES([Makefile src/Makefile doc/Makefile lib/Makefile m4/Makefile]) AC_OUTPUT diff --git a/depcomp b/depcomp index e5f9736..df8eea7 100755 --- a/depcomp +++ b/depcomp @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2007-03-29.01 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software -# Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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 @@ -17,9 +17,7 @@ scriptversion=2007-03-29.01 # 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -87,6 +85,15 @@ if test "$depmode" = dashXmstdout; then 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 + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -192,14 +199,14 @@ sgi) ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' -' ' ' >> $depfile - echo >> $depfile +' ' ' >> "$depfile" + echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile + >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -328,7 +335,12 @@ hp2) if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi @@ -404,7 +416,7 @@ dashmstdout) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -455,32 +467,39 @@ makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift - cleared=no - for arg in "$@"; do + cleared=no eat=no + for arg + do case $cleared in no) set ""; shift cleared=yes ;; esac + if test $eat = yes; then + eat=no + continue + fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done - obj_suffix="`echo $object | sed 's/^.*\././'`" + obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" @@ -500,7 +519,7 @@ cpp) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -538,13 +557,27 @@ cpp) msvisualcpp) # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. + # always write the preprocessed file to stdout. "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + IFS=" " for arg do case "$arg" in + -o) + shift + ;; + $object) + shift + ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift @@ -557,16 +590,23 @@ msvisualcpp) ;; esac done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$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" ;; +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) exec "$@" ;; @@ -585,5 +625,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/doc/Makefile.in b/doc/Makefile.in index edf7d78..218fd63 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11 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. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,8 +16,9 @@ @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -34,17 +36,14 @@ subdir = doc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex 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/lzo.m4 $(top_srcdir)/m4/openssl.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 +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = INFO_DEPS = tinc.info @@ -66,7 +65,22 @@ am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ 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' man5dir = $(mandir)/man5 man8dir = $(mandir)/man8 NROFF = nroff @@ -97,7 +111,6 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ GREP = @GREP@ INCLUDES = @INCLUDES@ INSTALL = @INSTALL@ @@ -105,38 +118,28 @@ 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_URL = @PACKAGE_URL@ 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@ @@ -184,6 +187,7 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ info_TEXINFOS = tinc.texi @@ -204,14 +208,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -229,6 +233,7 @@ $(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 +$(am__aclocal_m4_deps): tinc.info: tinc.texi restore=: && backupdir="$(am__leading_dot)am$$$$" && \ @@ -277,16 +282,18 @@ tinc.html: tinc.texi uninstall-dvi-am: @$(NORMAL_UNINSTALL) - @list='$(DVIS)'; for p in $$list; do \ - f=$(am__strip_dir) \ + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) - @list='$(HTMLS)'; for p in $$list; do \ - f=$(am__strip_dir) \ + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done @@ -300,7 +307,8 @@ uninstall-info-am: for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ 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; \ else :; fi @$(NORMAL_UNINSTALL) @@ -316,16 +324,18 @@ uninstall-info-am: uninstall-pdf-am: @$(NORMAL_UNINSTALL) - @list='$(PDFS)'; for p in $$list; do \ - f=$(am__strip_dir) \ + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) - @list='$(PSS)'; for p in $$list; do \ - f=$(am__strip_dir) \ + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done @@ -342,16 +352,20 @@ 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 \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ - test -f $(distdir)/$$relfile || \ - cp -p $$file $(distdir)/$$relfile; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: - -rm -rf tinc.aux tinc.cp tinc.cps tinc.fn tinc.fns tinc.ky tinc.kys tinc.log \ - tinc.pg tinc.pgs tinc.tmp tinc.toc tinc.tp tinc.tps tinc.vr \ - tinc.vrs tinc.dvi tinc.pdf tinc.ps tinc.html + -rm -rf tinc.aux tinc.cp tinc.cps tinc.fn tinc.fns tinc.ky tinc.kys \ + tinc.log tinc.pg tinc.pgs tinc.tmp tinc.toc tinc.tp tinc.tps \ + tinc.vr tinc.vrs + +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: @list='$(INFO_DEPS)'; for i in $$list; do \ @@ -359,96 +373,82 @@ 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]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done -install-man5: $(man5_MANS) $(man_MANS) +install-man5: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)" - @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.5*) list="$$list $$i" ;; \ - esac; \ + @list=''; test -n "$(man5dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | 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; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - 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 " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \ - done + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + uninstall-man5: @$(NORMAL_UNINSTALL) - @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.5*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - 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) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man5dir)" && rm -f $$files; } +install-man8: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)" - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ + @list=''; test -n "$(man8dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.8[a-z]*$$/p'; \ + } | 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; \ - for i in $$list; do \ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - 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 " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ - done + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ + done; } + uninstall-man8: @$(NORMAL_UNINSTALL) - @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ - l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ - for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - 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 + @list=''; test -n "$(man8dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.8[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man8dir)" && rm -f $$files; } tags: TAGS TAGS: @@ -457,6 +457,19 @@ CTAGS: distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -472,13 +485,17 @@ distdir: $(DISTFILES) 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; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 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 \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -513,13 +530,14 @@ clean-generic: distclean-generic: -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: @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 +clean-am: clean-aminfo clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile @@ -544,11 +562,14 @@ install-dvi: install-dvi-am install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" - @list='$(DVIS)'; for p in $$list; do \ + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: @@ -557,26 +578,31 @@ install-html: install-html-am install-html-am: $(HTMLS) @$(NORMAL_INSTALL) test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" - @list='$(HTMLS)'; for p in $$list; do \ + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ 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 \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ + list2="$$list2 $$d$$p"; \ 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-am: $(INFO_DEPS) @$(NORMAL_INSTALL) test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - list='$(INFO_DEPS)'; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ @@ -584,18 +610,19 @@ install-info-am: $(INFO_DEPS) if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ 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 \ - relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ - echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ - $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ + echo "$$ifile"; \ else : ; fi; \ 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) @if (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)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ @@ -609,23 +636,27 @@ install-pdf: install-pdf-am install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" - @list='$(PDFS)'; for p in $$list; do \ + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ - done + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-am install-ps-am: $(PSS) @$(NORMAL_INSTALL) test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" - @list='$(PSS)'; for p in $$list; do \ + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \ - done + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-am @@ -652,19 +683,20 @@ uninstall-man: uninstall-man5 uninstall-man8 .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic dist-info \ - 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-man5 install-man8 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ - mostlyclean-aminfo mostlyclean-generic pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ - uninstall-info-am uninstall-man uninstall-man5 uninstall-man8 \ - uninstall-pdf-am uninstall-ps-am +.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ + dist-info 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-man5 install-man8 \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic mostlyclean mostlyclean-aminfo \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-man uninstall-man5 uninstall-man8 uninstall-pdf-am \ + uninstall-ps-am # For additional rules usually of interest only to the maintainer, @@ -692,6 +724,7 @@ tincinclude.texi: tincinclude.texi.in $(substitute) tincinclude.texi.in > tincinclude.texi tinc.texi: tincinclude.texi + # 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: diff --git a/doc/sample-config.tar.gz b/doc/sample-config.tar.gz index db6e586..28172a6 100644 Binary files a/doc/sample-config.tar.gz and b/doc/sample-config.tar.gz differ diff --git a/doc/texinfo.tex b/doc/texinfo.tex index d2b264d..0d3ba16 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,11 +3,11 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2007-12-02.17} +\def\texinfoversion{2009-05-16.16} % -% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007, +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007 Free Software Foundation, Inc. +% 2007, 2008, 2009 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -97,6 +97,10 @@ \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active +\global\let\ptexquoteright'}% Math-mode def from plain.tex. +\let\ptexraggedright=\raggedright % If this character appears in an error message or help string, it % starts a new line in the output. @@ -354,7 +358,7 @@ % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; - % it needs to be + % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. @@ -460,7 +464,7 @@ \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} -% Each occurence of `\^^M' or `\^^M' is replaced by a single space. +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo @@ -485,7 +489,7 @@ % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. -% (Similarily, we have to think about #3 of \argcheckspacesY above: it is +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % @@ -542,12 +546,12 @@ % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they -% are not treated as enviroments; they don't open a group. (The +% are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) -% At runtime, environments start with this: +% At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty @@ -565,7 +569,7 @@ \fi } -% Evironment mismatch, #1 expected: +% Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, @@ -649,8 +653,8 @@ \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } @@ -705,7 +709,7 @@ \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. -% +% \def\onword{on} \def\offword{off} % @@ -916,15 +920,20 @@ where each line of input produces a line of output.} \temp } -% @include file insert text of that file as input. +% @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% - \makevalueexpandable - \def\temp{\input #1 }% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. \expandafter }\temp \popthisfilestack @@ -939,6 +948,8 @@ where each line of input produces a line of output.} \catcode`>=\other \catcode`+=\other \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other } \def\pushthisfilestack{% @@ -1114,6 +1125,16 @@ where each line of input produces a line of output.} \mathunderscore \let\\ = \mathbackslash \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. @@ -1127,17 +1148,21 @@ where each line of input produces a line of output.} \catcode`< = \active \catcode`> = \active \catcode`+ = \active + \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus + \let' = \ptexquoteright } } -% @bullet and @minus need the same treatment as @math, just above. +% Some math mode symbols. \def\bullet{$\ptexbullet$} -\def\minus{$-$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm @@ -1260,7 +1285,7 @@ where each line of input produces a line of output.} % that's what we do). % double active backslashes. -% +% {\catcode`\@=0 \catcode`\\=\active @gdef@activebackslashdouble{% @catcode`@\=@active @@ -1272,11 +1297,11 @@ where each line of input produces a line of output.} % us) handles it with this amazing macro to replace tokens, with minor % changes for Texinfo. It is included here under the GPL by permission % from the author, Heiko Oberdiek. -% +% % #1 is the tokens to replace. % #2 is the replacement. % #3 is the control sequence with the string. -% +% \def\HyPsdSubst#1#2#3{% \def\HyPsdReplace##1#1##2\END{% ##1% @@ -1311,7 +1336,10 @@ output) for that.)} \def\cmykDarkRed{0.28 1 1 0.35} \def\cmykBlack{0 0 0 1} % - \def\pdfsetcolor#1{\pdfliteral{#1 k}} + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 k #1 K}} + % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% @@ -1362,8 +1390,11 @@ output) for that.)} \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \openin 1 #1.pdf \ifeof 1 - \errhelp = \nopdfimagehelp - \errmessage{Could not find image file #1 for pdf}% + \openin 1 #1.PDF \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{PDF}% + \fi \else \gdef\pdfimgext{pdf}% \fi \else \gdef\pdfimgext{JPG}% @@ -1377,7 +1408,7 @@ output) for that.)} \closein 1 \endgroup % - % without \immediate, pdftex seg faults when the same image is + % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage @@ -1542,11 +1573,15 @@ output) for that.)} % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. - % + % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% @@ -1577,6 +1612,7 @@ output) for that.)} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else + % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax @@ -1607,6 +1643,10 @@ output) for that.)} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold. Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} + % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam @@ -1941,7 +1981,7 @@ end % Definitions for a main text size of 11pt. This is the default in % Texinfo. -% +% \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} @@ -2004,8 +2044,6 @@ end \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} -\def\authortt{\sectt} \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). @@ -2074,7 +2112,7 @@ end % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. -% +% \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} @@ -2137,8 +2175,6 @@ end \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} -\def\authortt{\sectt} \def\titleecsize{2074} % Chapter fonts (14.4pt). @@ -2165,7 +2201,7 @@ end \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} -\font\seci=cmmi12 +\font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} @@ -2209,7 +2245,7 @@ end % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. -% +% \def\xword{10} \def\xiword{11} % @@ -2219,7 +2255,7 @@ end % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. - % + % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi @@ -2270,7 +2306,7 @@ end \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} +\def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc @@ -2321,6 +2357,16 @@ end \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts @@ -2334,28 +2380,128 @@ end % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 -% -% I wish the USA used A4 paper. % --karl, 24jan03. - % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} + +\message{markup,} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} + +\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +\let\markupsetuplqsamp \markupsetnoligaturesquoteleft +\let\markupsetuplqkbd \markupsetnoligaturesquoteleft + +% Allow an option to not replace quotes with a regular directed right +% quote/apostrophe (char 0x27), but instead use the undirected quote +% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it +% the default, but it works for pasting with more pdf viewers (at least +% evince), the lilypond developers report. xpdf does work with the +% regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000}{OT1} -\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 -\setfont\shortcontsl\slshape{12}{1000}{OT1} -\setfont\shortconttt\ttshape{12}{1000}{OT1TT} - %% Add scribe-like font environments, plus @l for inline lisp (usually sans %% serif) and @ii for TeX italic @@ -2370,17 +2516,22 @@ end % @var is set to this for defun arguments. \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} -% like \smartslanted except unconditionally use \sl. We never want +% @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} \let\i=\smartitalic \let\slanted=\smartslanted -\let\var=\smartslanted +\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} \let\dfn=\smartslanted \let\emph=\smartitalic -% @b, explicit bold. +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b @@ -2412,22 +2563,35 @@ end \catcode`@=\other \def\endofsentencespacefactor{3000}% default +% @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } -\def\samp#1{`\tclose{#1}'\null} -\setfont\keyrm\rmshape{8}{1000}{OT1} -\font\keysy=cmsy9 -\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} -\def\key #1{{\nohyphenation \uppercase{#1}}\null} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% ctrl is no longer a Texinfo command. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @file, @option are the same as @samp. @@ -2469,11 +2633,11 @@ end { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup - \catcode\rquoteChar=\active \catcode\lquoteChar=\active - \let'\codequoteright \let`\codequoteleft - % + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash @@ -2505,7 +2669,7 @@ end % each of the four underscores in __typeof__. This is undesirable in % some manuals, especially if they don't have long identifiers in % general. @allowcodebreaks provides a way to control this. -% +% \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} @@ -2525,6 +2689,7 @@ end % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. +\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), @@ -2546,20 +2711,27 @@ end \def\wordexample{example} \def\wordcode{code} -% Default is `distinct.' +% Default is `distinct'. \kbdinputstyle distinct \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. \let\indicateurl=\code \let\env=\code \let\command=\code +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url @@ -2609,34 +2781,20 @@ end \let\email=\uref \fi -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. -% +% \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% @@ -2648,7 +2806,7 @@ end % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. -% +% \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% @@ -2658,6 +2816,44 @@ end \fi } + +\message{glyphs,} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} @@ -2667,52 +2863,59 @@ end % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. -% +% % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. -% +% % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted -% +% % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. -% +% % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. -% -% +% +% \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. - % + % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. - % + % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. - % + % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % - \ifx\curfontstyle\bfstylename + \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize - \else + \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } -% Hacks for glyphs from the EC fonts similar to \euro. We don't -% use \let for the aliases, because sometimes we redefine the original -% macro, and the alias should reflect the redefinition. +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} @@ -2722,8 +2925,36 @@ end \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% - % We can't distinguish serif/sanserif and italic/slanted, but this + % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. @@ -2756,7 +2987,7 @@ end % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. -% +% \ifx\Orb\undefined \def\Orb{\mathhexbox20D} \fi @@ -2851,12 +3082,9 @@ end \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} -\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines - \let\tt=\authortt} - \parseargdef\title{% \checkenv\titlepage - \leftline{\titlefonts\rm #1} + \leftline{\titlefonts\rmisbold #1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt @@ -2877,7 +3105,7 @@ end \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi - {\authorfont \leftline{#1}}% + {\secfonts\rmisbold \leftline{#1}}% \fi } @@ -3105,7 +3333,7 @@ end % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. - % + % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse @@ -3199,9 +3427,18 @@ end \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % \let\item=\itemizeitem } @@ -3222,6 +3459,7 @@ end \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } @@ -3443,12 +3681,19 @@ end % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group -% of an alignment entry. Note that \everycr resets \everytab. -\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% +% of an alignment entry. \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until -% we encounter the problem it was intended to solve again. +% we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% @@ -3847,11 +4092,11 @@ end \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. - \expandafter \ifx\csname donesynindex#2\endcsname \undefined + \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname - \expandafter\let\csname\donesynindex#2\endcsname = 1 + \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname @@ -3901,7 +4146,7 @@ end % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. - % + % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} @@ -3909,12 +4154,12 @@ end % @end macro % ... % @funindex commtest - % + % % The above is not enough to reproduce the bug, but it gives the flavor. - % + % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} - % + % % So: \let\endinput = \empty % @@ -3966,19 +4211,23 @@ end % Non-English letters. \definedummyword\AA \definedummyword\AE + \definedummyword\DH \definedummyword\L - \definedummyword\OE \definedummyword\O + \definedummyword\OE + \definedummyword\TH \definedummyword\aa \definedummyword\ae - \definedummyword\l - \definedummyword\oe - \definedummyword\o - \definedummyword\ss + \definedummyword\dh \definedummyword\exclamdown - \definedummyword\questiondown + \definedummyword\l + \definedummyword\o + \definedummyword\oe \definedummyword\ordf \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf @@ -4009,6 +4258,7 @@ end \definedummyword\guilsinglright \definedummyword\expansion \definedummyword\minus + \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print @@ -4052,6 +4302,7 @@ end \definedummyword\v \definedummyword\H \definedummyword\dotaccent + \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent @@ -4119,19 +4370,23 @@ end % Non-English letters. \def\AA{AA}% \def\AE{AE}% + \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% + \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% - \def\o{o}% - \def\ss{ss}% - \def\exclamdown{!}% - \def\questiondown{?}% \def\ordf{a}% \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% @@ -4141,20 +4396,19 @@ end \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% - \def\registeredsymbol{R}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% + \def\expansion{==>}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% - \def\expansion{==>}% \def\minus{-}% - \def\pounds{pounds}% \def\point{.}% + \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% @@ -4162,19 +4416,20 @@ end \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% + \def\registeredsymbol{R}% \def\result{=>}% - \def\textdegree{degrees}% + \def\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. - % + % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. - % + % \macrolist } @@ -4302,7 +4557,7 @@ end % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: - % + % % @deffn deffn-whatever % @vindex index-whatever % Description. @@ -4432,7 +4687,7 @@ end % % A straightforward implementation would start like this: % \def\entry#1#2{... -% But this frozes the catcodes in the argument, and can cause problems to +% But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % @@ -4883,7 +5138,9 @@ end \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % - \message{\putwordChapter\space \the\chapno}% + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% @@ -4894,15 +5151,17 @@ end \global\let\subsubsection = \numberedsubsubsec } -\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % - \def\appendixnum{\putwordAppendix\space \appendixletter}% - \message{\appendixnum}% + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % @@ -5034,7 +5293,6 @@ end % 3) Likewise, headings look best if no \parindent is used, and % if justification is not attempted. Hence \raggedright. - \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz @@ -5043,8 +5301,8 @@ end \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}% + \parindent=0pt\ptexraggedright + \rmisbold #1\hfill}}% \bigskip \par\penalty 200\relax \suppressfirstparagraphindent } @@ -5136,7 +5394,10 @@ end \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% - \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum: + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: \noexpand\thischaptername}% }% \else @@ -5144,7 +5405,10 @@ end \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% - \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum: + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi @@ -5163,7 +5427,7 @@ end \domark % {% - \chapfonts \rm + \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called @@ -5200,7 +5464,7 @@ end % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% @@ -5224,8 +5488,8 @@ end % \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\nobreak + \parindent=0pt\ptexraggedright + \rmisbold #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% @@ -5234,7 +5498,7 @@ end \def\centerchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\nobreak + \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen @@ -5267,7 +5531,7 @@ end \def\sectionheading#1#2#3#4{% {% % Switch to the right set of fonts. - \csname #2fonts\endcsname \rm + \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% @@ -5287,7 +5551,10 @@ end \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi @@ -5297,12 +5564,20 @@ end \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% - \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum: + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark @@ -5352,7 +5627,7 @@ end \nobreak % % Output the actual section heading. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% @@ -5368,11 +5643,11 @@ end % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) \vskip-\parskip - % + % % This is purely so the last item on the list is a known \penalty > % 10000. This is so \startdefun can avoid allowing breakpoints after % section headings. Otherwise, it would insert a valid breakpoint between: - % + % % @section sec-whatever % @deffn def-whatever \penalty 10001 @@ -5430,7 +5705,7 @@ end % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. -% +% \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active @@ -5480,7 +5755,7 @@ end % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. -% +% \def\tocreadfilename{\jobname.toc} % Normal (long) toc. @@ -5650,45 +5925,12 @@ end \message{environments,} % @foo ... @end foo. -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} -% -\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{% - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} - % @tex ... @end tex escapes into raw Tex temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain tex @ character. \envdef\tex{% + \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie @@ -5698,6 +5940,8 @@ end \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other + \catcode`\`=\other + \catcode`\'=\other \escapechar=`\\ % \let\b=\ptexb @@ -5717,6 +5961,7 @@ end \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% @@ -5832,6 +6077,7 @@ end % This macro is called at the beginning of all the @example variants, % inside a group. +\newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy @@ -5839,7 +6085,12 @@ end \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent \parindent = 0pt + \let\indent\nonfillindent + % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing @@ -5850,6 +6101,24 @@ end \let\exdent=\nofillexdent } +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: @@ -5898,7 +6167,7 @@ end % \maketwodispenvs {lisp}{example}{% \nonfillstart - \tt\quoteexpand + \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } @@ -5936,12 +6205,36 @@ end \let\Eflushright = \afterenvbreak +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % -\envdef\quotation{% +\def\quotationstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % @@ -5956,6 +6249,17 @@ end \parsearg\quotationlabel } +\envdef\quotation{% + \setnormaldispenv + \quotationstart +} + +\envdef\smallquotation{% + \setsmalldispenv + \quotationstart +} +\let\Esmallquotation = \Equotation + % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % @@ -5991,18 +6295,16 @@ end \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % -% [Knuth] pp. 380,381,391 -% Disable Spanish ligatures ?` and !` of \tt font -\begingroup - \catcode`\`=\active\gdef`{\relax\lq} -\endgroup -% % Setup for the @verb command. % % Eight spaces for a tab @@ -6014,7 +6316,7 @@ end \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% - \catcode`\`=\active + \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and @@ -6029,33 +6331,6 @@ end \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % \def\starttabbox{\setbox0=\hbox\bgroup} - -% Allow an option to not replace quotes with a regular directed right -% quote/apostrophe (char 0x27), but instead use the undirected quote -% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it -% the default, but it works for pasting with more pdf viewers (at least -% evince), the lilypond developers report. xpdf does work with the -% regular 0x27. -% -\def\codequoteright{% - \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax - \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax - '% - \else \char'15 \fi - \else \char'15 \fi -} -% -% and a similar option for the left quote char vs. a grave accent. -% Modern fonts display ASCII 0x60 as a grave accent, so some people like -% the code environments to do likewise. -% -\def\codequoteleft{% - \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax - \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax - `% - \else \char'22 \fi - \else \char'22 \fi -} % \begingroup \catcode`\^^I=\active @@ -6069,13 +6344,6 @@ end \wd0=\dimen0 \box0 \starttabbox }% } - \catcode`\'=\active - \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}% - % - \catcode`\`=\active - \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}% - % - \gdef\quoteexpand{\rquoteexpand \lquoteexpand}% \endgroup % start the verbatim environment. @@ -6085,9 +6353,8 @@ end % Easiest (and conventionally used) font for verbatim \tt \def\par{\leavevmode\egroup\box0\endgraf}% - \catcode`\`=\active \tabexpand - \quoteexpand + \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count @@ -6147,6 +6414,7 @@ end {% \makevalueexpandable \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. \input #1 \afterenvbreak }% @@ -6246,7 +6514,7 @@ end \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remainnig is to define \deffnheader. +% the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun @@ -6425,7 +6693,7 @@ end % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. Let's try @var for that. - \let\var=\ttslanted + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } @@ -6579,7 +6847,7 @@ end % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). -% +% \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname @@ -6953,20 +7221,22 @@ end % % Make link in pdf output. \ifpdf - \leavevmode - \getfilename{#4}% {\indexnofonts \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. + \getfilename{#4}% + % % See comments at \activebackslashdouble. {\activebackslashdouble \xdef\pdfxrefdest{#1}% \backslashparens\pdfxrefdest}% % + \leavevmode + \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 - \startlink attr{/Border [0 0 0]}% - goto file{\the\filename.pdf} name{\pdfxrefdest}% + goto file{\the\filename.pdf} name{\pdfxrefdest}% \else - \startlink attr{/Border [0 0 0]}% - goto name{\pdfmkpgn{\pdfxrefdest}}% + goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% @@ -7317,7 +7587,7 @@ end % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. -% Similarily, if a @footnote appears inside an alignment, save the footnote +% Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. @@ -7421,15 +7691,19 @@ end % If the image is by itself, center it. \ifvmode \imagevmodetrue - \nobreak\bigskip + \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak - \line\bgroup \fi % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. On the other hand, if + % it's at the top level, we don't want the normal paragraph indentation. + \noindent + % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% @@ -7440,7 +7714,7 @@ end \epsfbox{#1.eps}% \fi % - \ifimagevmode \egroup \bigbreak \fi % space after the image + \ifimagevmode \medskip \fi % space after the standalone image \endgroup} @@ -7712,10 +7986,9 @@ end \message{localization,} -% @documentlanguage is usually given very early, just after -% @setfilename. If done too late, it may not override everything -% properly. Single argument is the language (de) or locale (de_DE) -% abbreviation. It would be nice if we could set up a hyphenation file. +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active @@ -7728,31 +8001,60 @@ end \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else + \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 - \endgroup + \endgroup % end raw TeX \endgroup} -} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. -% -\def\documentlanguagetrywithoutunderscore#1_#2\finish{% +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else + \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } +}% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or -is empty. Maybe you need to install it? In the current directory -should work if nowhere else does.} +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% @@ -7793,7 +8095,7 @@ should work if nowhere else does.} \setnonasciicharscatcode\active \lattwochardefs % - \else \ifx \declaredencoding \latone + \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % @@ -7805,7 +8107,7 @@ should work if nowhere else does.} \setnonasciicharscatcode\active \utfeightchardefs % - \else + \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight @@ -7817,7 +8119,7 @@ should work if nowhere else does.} % A message to be logged when using a character that isn't available % the default font encoding (OT1). -% +% \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. @@ -7830,21 +8132,21 @@ should work if nowhere else does.} % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% - \gdef^^a0{~} + \gdef^^a0{~} \gdef^^a1{\exclamdown} - \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} - \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} - \gdef^^a8{\"{}} - \gdef^^a9{\copyright} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} \gdef^^aa{\ordf} - \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}} + \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} - \gdef^^ad{\-} - \gdef^^ae{\registeredsymbol} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} @@ -7860,7 +8162,7 @@ should work if nowhere else does.} \gdef^^b9{$^1$} \gdef^^ba{\ordm} % - \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}} + \gdef^^bb{\guilletright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} @@ -7871,7 +8173,7 @@ should work if nowhere else does.} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} - \gdef^^c5{\ringaccent A} + \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} @@ -7883,7 +8185,7 @@ should work if nowhere else does.} \gdef^^ce{\^I} \gdef^^cf{\"I} % - \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}} + \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} @@ -7897,7 +8199,7 @@ should work if nowhere else does.} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} - \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}} + \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} @@ -7917,7 +8219,7 @@ should work if nowhere else does.} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % - \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}} + \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} @@ -7931,7 +8233,7 @@ should work if nowhere else does.} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} - \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}} + \gdef^^fe{\th} \gdef^^ff{\"y} } @@ -7953,7 +8255,7 @@ should work if nowhere else does.} % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{~} - \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}} + \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} @@ -7970,8 +8272,8 @@ should work if nowhere else does.} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} - \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}} - \gdef^^b2{\missingcharmsg{OGONEK}} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} @@ -7996,14 +8298,14 @@ should work if nowhere else does.} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} - \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}} + \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % - \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}} + \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} @@ -8012,7 +8314,7 @@ should work if nowhere else does.} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} - \gdef^^d9{\ringaccent U} + \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} @@ -8030,14 +8332,14 @@ should work if nowhere else does.} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} - \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}} + \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'\i} \gdef^^ee{\^\i} \gdef^^ef{\v d} % - \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}} + \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} @@ -8056,11 +8358,11 @@ should work if nowhere else does.} } % UTF-8 character definitions. -% +% % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. -% +% \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz @@ -8210,6 +8512,7 @@ should work if nowhere else does.} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} + \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} @@ -8222,6 +8525,7 @@ should work if nowhere else does.} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} @@ -8241,6 +8545,7 @@ should work if nowhere else does.} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} @@ -8253,16 +8558,21 @@ should work if nowhere else does.} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} @@ -8410,6 +8720,8 @@ should work if nowhere else does.} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} @@ -8791,6 +9103,9 @@ should work if nowhere else does.} \message{and turning on texinfo input format.} +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \catcode`\~=\other @@ -8900,7 +9215,7 @@ should work if nowhere else does.} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. -% +% @def@normalturnoffactive{% @let\=@normalbackslash @let"=@normaldoublequote @@ -8912,6 +9227,8 @@ should work if nowhere else does.} @let>=@normalgreater @let+=@normalplus @let$=@normaldollar %$ font-lock fix + @markupsetuplqdefault + @markupsetuprqdefault @unsepspaces } @@ -8946,9 +9263,21 @@ should work if nowhere else does.} @catcode`@# = @other @catcode`@% = @other +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Gnulib now utterly and painfully insists on no trailing whitespace. +@c So we have to nuke it. @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) +@c eval: (add-hook 'write-file-hooks 'nuke-trailing-whitespace) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" diff --git a/doc/tinc.conf.5.in b/doc/tinc.conf.5.in index 0ad3da3..1cb2f0c 100644 --- a/doc/tinc.conf.5.in +++ b/doc/tinc.conf.5.in @@ -1,4 +1,4 @@ -.Dd 2008-12-22 +.Dd 2009-03-05 .Dt TINC.CONF 5 .\" Manual page created by: .\" Ivo Timmermans @@ -304,6 +304,10 @@ or .Va PrivateKeyFile specified in the configuration file. +.It Va ProcessPriority Li = low | normal | high +When this option is used the priority of the tincd process will be adjusted. +Increasing the priority may help to reduce latency and packet loss on the VPN. + .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, and will only allow nodes and subnets on the VPN which are present in the @@ -394,7 +398,7 @@ Either the PEM format is used, or exactly one of the above two options must be s in each host configuration file, 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 +.It Va Subnet Li = Ar address Ns Op Li / Ns Ar prefixlength Ns Op Li # Ns Ar weight The subnet which this tinc daemon will serve. .Nm tinc tries to look up which other daemon it should send a packet to by searching the appropriate subnet. @@ -416,13 +420,24 @@ 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. MAC addresses are notated like 0:1a:2b:3c:4d:5e. -.It Va TCPOnly Li = yes | no Pq no +.Pp +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, 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 from behind a masquerading firewall, or if UDP packet routing is disabled somehow. 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 .Sh SCRIPTS @@ -504,6 +519,9 @@ When a host becomes (un)reachable, this is set to the port number it uses for co .It Ev 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 .Sh FILES diff --git a/doc/tinc.info b/doc/tinc.info index a4f7858..fe5c670 100644 --- a/doc/tinc.info +++ b/doc/tinc.info @@ -1,18 +1,16 @@ -This is tinc.info, produced by makeinfo version 4.11 from tinc.texi. +This is tinc.info, produced by makeinfo version 4.13 from tinc.texi. INFO-DIR-SECTION Networking tools START-INFO-DIR-ENTRY * tinc: (tinc). The tinc Manual. END-INFO-DIR-ENTRY - This is the info manual for tinc version 1.0.9, a Virtual Private + This is the info manual for tinc version 1.0.10, a Virtual Private Network daemon. - Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen + Copyright (C) 1998-2009 Ivo Timmermans, Guus Sliepen and Wessel Dankers . - $Id: tinc.texi 1597 2008-12-22 21:29:21Z guus $ - Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @@ -258,8 +256,8 @@ File: tinc.info, Node: Configuration of Darwin (MacOS/X) kernels, Next: Config Tinc on Darwin relies on a tunnel driver for its data acquisition from the kernel. Tinc supports either the driver from -`http://www-user.rhrk.uni-kl.de/~nissler/tuntap/', which supports both -tun and tap style devices, and also the driver from from +`http://tuntaposx.sourceforge.net/', which supports both tun and tap +style devices, and also the driver from from `http://chrisp.de/en/projects/tunnel.html'. The former driver is recommended. The tunnel driver must be loaded before starting tinc with the following command: @@ -839,6 +837,11 @@ PrivateKeyFile = (`/etc/tinc/NETNAME/rsa_key.priv') Note that there must be exactly one of PrivateKey or PrivateKeyFile specified in the configuration file. +ProcessPriority = + When this option is used the priority of the tincd process will be + adjusted. Increasing the priority may help to reduce latency and + packet loss on the VPN. + TunnelServer = (no) [experimental] When this option is enabled tinc will no longer forward information between other tinc daemons, and will only allow nodes @@ -913,7 +916,7 @@ PublicKeyFile = [obsolete] host configuration file, if you want to be able to establish a connection with that host. -Subnet = +Subnet = The subnet which this tinc daemon will serve. Tinc tries to look up which other daemon it should send a packet to by searching the appropiate subnet. If the packet matches a subnet, it will be @@ -936,7 +939,14 @@ Subnet = becomes /22. This conforms to standard CIDR notation as described in RFC1519 (ftp://ftp.isi.edu/in-notes/rfc1519.txt) -TCPonly = (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. + +TCPonly = (no) [deprecated] If this variable is set to yes, then the packets are tunnelled over a TCP connection instead of a UDP connection. This is especially useful for those who want to run a tinc daemon from @@ -944,6 +954,9 @@ TCPonly = (no) disabled somehow. Setting this options also implicitly sets IndirectData. + Since version 1.0.10, tinc will automatically detect whether + communication via UDP is possible or not. +  File: tinc.info, Node: Scripts, Next: How to configure, Prev: Host configuration variables, Up: Configuration files @@ -1021,6 +1034,10 @@ signs. `SUBNET' When a subnet becomes (un)reachable, this is set to the subnet. +`WEIGHT' + When a subnet becomes (un)reachable, this is set to the subnet + weight. +  File: tinc.info, Node: How to configure, Prev: Scripts, Up: Configuration files @@ -1350,7 +1367,7 @@ command line options. `-K, --generate-keys[=BITS]' Generate public/private keypair of BITS length. If BITS is not - specified, 1024 is the default. tinc will ask where you want to + specified, 2048 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. @@ -1371,6 +1388,25 @@ command line options. `--bypass-security' Disables encryption and authentication. Only useful for debugging. +`-R, --chroot' + Change process root directory to the directory where the config + file is located (`/etc/tinc/NETNAME/' as determined by -n/-net + option or as given by -c/-config option), for added security. The + chroot is performed after all the initialization is done, after + writing pid files and opening network sockets. + + Note that this option alone does not do any good without -U/-user, + below. + + Note also that tinc can't run scripts anymore (such as tinc-down + or host-up), unless it's setup to be runnable inside chroot + environment. + +`-U, --user=USER' + Switch to the given USER after initialization, at the same time as + chroot is performed (see -chroot above). With this option tinc + drops privileges, for added security. + `--help' Display a short reminder of these runtime options and terminate. @@ -1479,7 +1515,9 @@ check the following things: it, make sure that it forwards TCP and UDP traffic to port 655 to the host running tinc. You can add `TCPOnly = yes' to your host config file to force tinc to only use a single TCP connection, - this works through most firewalls and NATs. + this works through most firewalls and NATs. Since version 1.0.10, + tinc will automatically fall back to TCP if direct communication + via UDP is not possible.  @@ -1569,12 +1607,6 @@ high enough. * If you see this only sporadically, it is harmless and caused by a node sending packets using an old key. - * 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 `TCPOnly = yes' - to host configuration files to force all VPN traffic to go - over a TCP connection. - `Got bad/bogus/unauthorized REQUEST from foo (1.2.3.4 port 12345)' * Node foo does not have the right public/private keypair. Generate new keypairs and distribute them again. @@ -2151,7 +2183,7 @@ File: tinc.info, Node: Authors, Prev: Contact information, Up: About us 8.2 Authors =========== -Ivo Timmermans (zarq) () +Ivo Timmermans (zarq) Guus Sliepen (guus) () @@ -2290,6 +2322,8 @@ Concept Index (line 158) * PrivateKeyFile: Main configuration variables. (line 164) +* ProcessPriority: Main configuration variables. + (line 172) * PublicKey: Host configuration variables. (line 52) * PublicKeyFile: Host configuration variables. @@ -2310,12 +2344,14 @@ Concept Index * SUBNET: Scripts. (line 74) * Subnet: Host configuration variables. (line 67) +* Subnet weight: Host configuration variables. + (line 90) * SVPN: Security. (line 11) * switch: Main configuration variables. (line 111) * TCP: The meta-connection. (line 10) * TCPonly: Host configuration variables. - (line 90) + (line 97) * TINC: Security. (line 6) * tinc: Introduction. (line 6) * tinc-down: Scripts. (line 18) @@ -2326,7 +2362,7 @@ Concept Index * tunifhead: Main configuration variables. (line 62) * TunnelServer: Main configuration variables. - (line 172) + (line 177) * tunnohead: Main configuration variables. (line 56) * UDP <1>: Encryption of network packets. @@ -2341,71 +2377,72 @@ Concept Index (line 6) * vpnd: tinc. (line 6) * website: Contact information. (line 6) +* WEIGHT: Scripts. (line 77) * zlib: zlib. (line 6)  Tag Table: -Node: Top861 -Node: Introduction1160 -Node: Virtual Private Networks1970 -Node: tinc3695 -Node: Supported platforms5222 -Node: Preparations5920 -Node: Configuring the kernel6176 -Node: Configuration of Linux kernels6585 -Node: Configuration of FreeBSD kernels7440 -Node: Configuration of OpenBSD kernels7830 -Node: Configuration of NetBSD kernels8438 -Node: Configuration of Solaris kernels8843 -Node: Configuration of Darwin (MacOS/X) kernels9504 -Node: Configuration of Windows10207 -Node: Libraries10721 -Node: OpenSSL11109 -Node: zlib13385 -Node: lzo14214 -Node: Installation15001 -Node: Building and installing tinc16016 -Node: Darwin (MacOS/X) build environment16675 -Node: Cygwin (Windows) build environment17243 -Node: MinGW (Windows) build environment17831 -Node: System files18355 -Node: Device files18620 -Node: Other files19036 -Node: Configuration19649 -Node: Configuration introduction19960 -Node: Multiple networks21233 -Node: How connections work22659 -Node: Configuration files23881 -Node: Main configuration variables24888 -Node: Host configuration variables32721 -Node: Scripts37286 -Node: How to configure39965 -Node: Generating keypairs41228 -Node: Network interfaces41727 -Node: Example configuration43575 -Node: Running tinc48887 -Node: Runtime options49477 -Node: Signals51484 -Node: Debug levels52553 -Node: Solving problems53489 -Node: Error messages54919 -Node: Sending bug reports59241 -Node: Technical information60193 -Node: The connection60424 -Node: The UDP tunnel60736 -Node: The meta-connection63797 -Node: The meta-protocol65266 -Node: Security70275 -Node: Authentication protocol71405 -Node: Encryption of network packets76409 -Node: Security issues77782 -Node: Platform specific information79399 -Node: Interface configuration79627 -Node: Routes81526 -Node: About us83442 -Node: Contact information83617 -Node: Authors84021 -Node: Concept Index84447 +Node: Top810 +Node: Introduction1109 +Node: Virtual Private Networks1919 +Node: tinc3644 +Node: Supported platforms5171 +Node: Preparations5869 +Node: Configuring the kernel6125 +Node: Configuration of Linux kernels6534 +Node: Configuration of FreeBSD kernels7389 +Node: Configuration of OpenBSD kernels7779 +Node: Configuration of NetBSD kernels8387 +Node: Configuration of Solaris kernels8792 +Node: Configuration of Darwin (MacOS/X) kernels9453 +Node: Configuration of Windows10142 +Node: Libraries10656 +Node: OpenSSL11044 +Node: zlib13320 +Node: lzo14149 +Node: Installation14936 +Node: Building and installing tinc15951 +Node: Darwin (MacOS/X) build environment16610 +Node: Cygwin (Windows) build environment17178 +Node: MinGW (Windows) build environment17766 +Node: System files18290 +Node: Device files18555 +Node: Other files18971 +Node: Configuration19584 +Node: Configuration introduction19895 +Node: Multiple networks21168 +Node: How connections work22594 +Node: Configuration files23816 +Node: Main configuration variables24823 +Node: Host configuration variables32865 +Node: Scripts37942 +Node: How to configure40712 +Node: Generating keypairs41975 +Node: Network interfaces42474 +Node: Example configuration44322 +Node: Running tinc49634 +Node: Runtime options50224 +Node: Signals53019 +Node: Debug levels54088 +Node: Solving problems55024 +Node: Error messages56576 +Node: Sending bug reports60589 +Node: Technical information61541 +Node: The connection61772 +Node: The UDP tunnel62084 +Node: The meta-connection65145 +Node: The meta-protocol66614 +Node: Security71623 +Node: Authentication protocol72753 +Node: Encryption of network packets77757 +Node: Security issues79130 +Node: Platform specific information80747 +Node: Interface configuration80975 +Node: Routes82874 +Node: About us84790 +Node: Contact information84965 +Node: Authors85369 +Node: Concept Index85774  End Tag Table diff --git a/doc/tinc.texi b/doc/tinc.texi index 2341245..e6e6a42 100644 --- a/doc/tinc.texi +++ b/doc/tinc.texi @@ -1,5 +1,4 @@ \input texinfo @c -*-texinfo-*- -@c $Id: tinc.texi 1597 2008-12-22 21:29:21Z guus $ @c %**start of header @setfilename tinc.info @settitle tinc Manual @@ -16,12 +15,10 @@ This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon. -Copyright @copyright{} 1998-2008 Ivo Timmermans, +Copyright @copyright{} 1998-2009 Ivo Timmermans, Guus Sliepen and Wessel Dankers . -$Id: tinc.texi 1597 2008-12-22 21:29:21Z guus $ - Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @@ -40,15 +37,12 @@ permission notice identical to this one. @page @vskip 0pt plus 1filll -@cindex copyright This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon. -Copyright @copyright{} 1998-2006 Ivo Timmermans, +Copyright @copyright{} 1998-2009 Ivo Timmermans, Guus Sliepen and Wessel Dankers . -$Id: tinc.texi 1597 2008-12-22 21:29:21Z guus $ - Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @@ -60,7 +54,7 @@ permission notice identical to this one. @end titlepage -@ifinfo +@ifnottex @c ================================================================== @node Top @top Top @@ -76,7 +70,7 @@ permission notice identical to this one. * About us:: * Concept Index:: All used terms explained @end menu -@end ifinfo +@end ifnottex @c ================================================================== @node Introduction @@ -307,7 +301,7 @@ If the @file{net/if_tun.h} header file is missing, install it from the source pa @subsection Configuration of Darwin (MacOS/X) kernels Tinc on Darwin relies on a tunnel driver for its data acquisition from the kernel. -Tinc supports either the driver from @uref{http://www-user.rhrk.uni-kl.de/~nissler/tuntap/}, +Tinc supports either the driver from @uref{http://tuntaposx.sourceforge.net/}, which supports both tun and tap style devices, and also the driver from from @uref{http://chrisp.de/en/projects/tunnel.html}. The former driver is recommended. @@ -929,6 +923,11 @@ Note that there must be exactly one of PrivateKey or PrivateKeyFile specified in the configuration file. +@cindex ProcessPriority +@item ProcessPriority = +When this option is used the priority of the tincd process will be adjusted. +Increasing the priority may help to reduce latency and packet loss on the VPN. + @cindex TunnelServer @item TunnelServer = (no) [experimental] When this option is enabled tinc will no longer forward information between other tinc daemons, @@ -1015,7 +1014,7 @@ in each host configuration file, if you want to be able to establish a connection with that host. @cindex Subnet -@item Subnet = <@var{address}[/@var{prefixlength}]> +@item Subnet = <@var{address}[/@var{prefixlength}[#@var{weight}]]> The subnet which this tinc daemon will serve. Tinc tries to look up which other daemon it should send a packet to by searching the appropiate subnet. If the packet matches a subnet, @@ -1039,13 +1038,23 @@ example: netmask 255.255.255.0 would become /24, 255.255.252.0 becomes /22. This conforms to standard CIDR notation as described in @uref{ftp://ftp.isi.edu/in-notes/rfc1519.txt, RFC1519} +@cindex Subnet weight +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. + @cindex TCPonly -@item TCPonly = (no) +@item TCPonly = (no) [deprecated] If this variable is set to yes, then the packets are tunnelled over a TCP connection instead of a UDP connection. This is especially useful for those who want to run a tinc daemon from behind a masquerading firewall, or if UDP packet routing is disabled somehow. Setting this options also implicitly sets IndirectData. + +Since version 1.0.10, tinc will automatically detect whether communication via +UDP is possible or not. @end table @@ -1134,6 +1143,10 @@ this is set to the port number it uses for communication with other tinc daemons @item SUBNET When a subnet becomes (un)reachable, this is set to the subnet. +@cindex WEIGHT +@item WEIGHT +When a subnet becomes (un)reachable, this is set to the subnet weight. + @end table @@ -1486,7 +1499,7 @@ Use configuration for net @var{netname}. @xref{Multiple networks}. @item -K, --generate-keys[=@var{bits}] Generate public/private keypair of @var{bits} length. If @var{bits} is not specified, -1024 is the default. tinc will ask where you want to store the files, +2048 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. @@ -1505,6 +1518,23 @@ Write PID to @var{file} instead of @file{@value{localstatedir}/run/tinc.@var{net Disables encryption and authentication. Only useful for debugging. +@item -R, --chroot +Change process root directory to the directory where the config file is +located (@file{@value{sysconfdir}/tinc/@var{netname}/} as determined by +-n/--net option or as given by -c/--config option), for added security. +The chroot is performed after all the initialization is done, after +writing pid files and opening network sockets. + +Note that this option alone does not do any good without -U/--user, below. + +Note also that tinc can't run scripts anymore (such as tinc-down or host-up), +unless it's setup to be runnable inside chroot environment. + +@item -U, --user=@var{user} +Switch to the given @var{user} after initialization, at the same time as +chroot is performed (see --chroot above). With this option tinc drops +privileges, for added security. + @item --help Display a short reminder of these runtime options and terminate. @@ -1611,7 +1641,7 @@ Do you have a firewall or a NAT device (a masquerading firewall or perhaps an AD 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} to your host config file to force tinc to only use a single TCP connection, -this works through most firewalls and NATs. +this works through most firewalls and NATs. Since version 1.0.10, tinc will automatically fall back to TCP if direct communication via UDP is not possible. @end itemize @@ -1710,8 +1740,6 @@ or if that is not the case, try changing the prefix length into /32. @itemize @item If you see this only sporadically, it is harmless and caused by a node sending packets using an old key. -@item 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} to host configuration files to force all VPN traffic to go over a TCP connection. @end itemize @item Got bad/bogus/unauthorized REQUEST from foo (1.2.3.4 port 12345) @@ -2335,7 +2363,7 @@ and join channel #tinc. @section Authors @table @asis -@item Ivo Timmermans (zarq) (@email{ivo@@tinc-vpn.org}) +@item Ivo Timmermans (zarq) @item Guus Sliepen (guus) (@email{guus@@tinc-vpn.org}) @end table diff --git a/doc/tincd.8.in b/doc/tincd.8.in index 97654f3..b852052 100644 --- a/doc/tincd.8.in +++ b/doc/tincd.8.in @@ -1,4 +1,4 @@ -.Dd 2002-03-25 +.Dd 2009-05-18 .Dt TINCD 8 .\" Manual page created by: .\" Ivo Timmermans @@ -8,7 +8,7 @@ .Nd tinc VPN daemon .Sh SYNOPSIS .Nm -.Op Fl cdDkKnL +.Op Fl cdDkKnLRU .Op Fl -config Ns = Ns Ar DIR .Op Fl -no-detach .Op Fl -debug Ns Op = Ns Ar LEVEL @@ -19,6 +19,8 @@ .Op Fl -logfile Ns Op = Ns Ar FILE .Op Fl -pidfile Ns = Ns Ar FILE .Op Fl -bypass-security +.Op Fl -chroot +.Op Fl -user Ns = Ns Ar USER .Op Fl -help .Op Fl -version .Sh DESCRIPTION @@ -66,7 +68,7 @@ Connect to net Generate public/private RSA keypair and exit. If .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, you have to remove them manually. .It Fl L, -mlock @@ -87,6 +89,14 @@ Under Windows this option will be ignored. .It Fl -bypass-security Disables encryption and authentication of the meta protocol. Only useful for debugging. +.It Fl -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 -user Ns = Ns Ar USER +setuid to the specified +.Ar USER +after initialization. .It Fl -help Display short list of options. .It Fl -version diff --git a/have.h b/have.h index 8a58af3..9a9efcb 100644 --- a/have.h +++ b/have.h @@ -1,7 +1,7 @@ /* have.h -- include headers which are known to exist Copyright (C) 1998-2005 Ivo Timmermans - 2003-2006 Guus Sliepen + 2003-2009 Guus Sliepen 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 @@ -13,9 +13,9 @@ 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 + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_HAVE_H__ @@ -31,6 +31,17 @@ #include #include +#ifdef HAVE_MINGW +#ifdef WITH_WINDOWS2000 +#define WINVER Windows2000 +#else +#define WINVER WindowsXP +#endif +#include +#include +#include +#endif + #ifdef HAVE_STDBOOL_H #include #endif @@ -160,9 +171,4 @@ #include #endif -#ifdef HAVE_MINGW -#include -#include -#endif - #endif /* __TINC_SYSTEM_H__ */ diff --git a/install-sh b/install-sh index a5897de..6781b98 100755 --- a/install-sh +++ b/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2006-12-25.00 +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -515,5 +515,6 @@ done # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/lib/Makefile.am b/lib/Makefile.am index 59261ae..734bb64 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,5 +1,4 @@ ## Process this file with automake to produce Makefile.in -# $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $ noinst_LIBRARIES = libvpn.a @@ -10,6 +9,6 @@ libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c avl_tre 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 +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 ipv6.h ipv4.h ethernet.h EXTRA_DIST = diff --git a/lib/Makefile.in b/lib/Makefile.in index b810f1d..a2ed27f 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11 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. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,13 +15,12 @@ @SET_MAKE@ -# $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $ - VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -40,17 +40,14 @@ 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/lzo.m4 $(top_srcdir)/m4/openssl.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 +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru @@ -63,6 +60,7 @@ libvpn_a_OBJECTS = $(am_libvpn_a_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -93,7 +91,6 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ GREP = @GREP@ INCLUDES = @INCLUDES@ -I. -I$(top_builddir) INSTALL = @INSTALL@ @@ -101,38 +98,28 @@ 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_URL = @PACKAGE_URL@ 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@ @@ -180,13 +167,14 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ 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 +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 ipv6.h ipv4.h ethernet.h EXTRA_DIST = all: all-am @@ -196,14 +184,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu lib/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -221,6 +209,7 @@ $(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 +$(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) @@ -252,14 +241,14 @@ distclean-compile: .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(am__mv) $(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 +@am__fastdepCC_TRUE@ $(am__mv) $(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) '$<'` @@ -269,14 +258,14 @@ ID: $(HEADERS) $(SOURCES) $(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; } \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -284,29 +273,34 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 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 \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -327,13 +321,17 @@ distdir: $(DISTFILES) 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; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 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 \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -361,6 +359,7 @@ clean-generic: distclean-generic: -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: @echo "This command is intended for maintainers to use" @@ -381,6 +380,8 @@ dvi-am: html: html-am +html-am: + info: info-am info-am: @@ -389,18 +390,28 @@ install-data-am: install-dvi: install-dvi-am +install-dvi-am: + install-exec-am: install-html: install-html-am +install-html-am: + install-info: install-info-am +install-info-am: + install-man: install-pdf: install-pdf-am +install-pdf-am: + install-ps: install-ps-am +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -437,6 +448,7 @@ uninstall-am: 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: diff --git a/lib/avl_tree.c b/lib/avl_tree.c index 551b3d9..a8bf5d5 100644 --- a/lib/avl_tree.c +++ b/lib/avl_tree.c @@ -15,9 +15,9 @@ 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. + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Original AVL tree library by Michael H. Buselli . @@ -28,8 +28,6 @@ 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 . - - $Id: avl_tree.c 1470 2006-11-11 22:45:45Z guus $ */ #include "system.h" diff --git a/lib/avl_tree.h b/lib/avl_tree.h index f0eb842..f442934 100644 --- a/lib/avl_tree.h +++ b/lib/avl_tree.h @@ -15,9 +15,9 @@ 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. + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Original AVL tree library by Michael H. Buselli . @@ -28,8 +28,6 @@ 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 . - - $Id: avl_tree.h 1452 2006-04-26 13:52:58Z guus $ */ diff --git a/lib/dropin.c b/lib/dropin.c index a632671..89039da 100644 --- a/lib/dropin.c +++ b/lib/dropin.c @@ -1,7 +1,7 @@ /* dropin.c -- a set of drop-in replacements for libc functions Copyright (C) 2000-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: dropin.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -38,8 +36,7 @@ Unless the argument noclose is non-zero, daemon() will redirect standard input, standard output and standard error to /dev/null. */ -int daemon(int nochdir, int noclose) -{ +int daemon(int nochdir, int noclose) { #ifdef HAVE_FORK pid_t pid; int fd; @@ -97,8 +94,7 @@ int daemon(int nochdir, int noclose) current directory name. If the environment variable PWD is set, and its value is correct, then that value will be returned. */ -char *get_current_dir_name(void) -{ +char *get_current_dir_name(void) { size_t size; char *buf; char *r; @@ -125,27 +121,35 @@ char *get_current_dir_name(void) #endif #ifndef HAVE_ASPRINTF -int asprintf(char **buf, const char *fmt, ...) -{ - int status; +int asprintf(char **buf, const char *fmt, ...) { + int result; va_list ap; + va_start(ap, fmt); + result = vasprintf(buf, fmt, ap); + va_end(ap); + return result; +} + +int vasprintf(char **buf, const char *fmt, va_list ap) { + int status; + va_list aq; int len; len = 4096; *buf = xmalloc(len); - va_start(ap, fmt); - status = vsnprintf(*buf, len, fmt, ap); - va_end(ap); + va_copy(aq, ap); + status = vsnprintf(*buf, len, fmt, aq); + va_end(aq); if(status >= 0) *buf = xrealloc(*buf, status + 1); if(status > len - 1) { len = status; - va_start(ap, fmt); - status = vsnprintf(*buf, len, fmt, ap); - va_end(ap); + va_copy(aq, ap); + status = vsnprintf(*buf, len, fmt, aq); + va_end(aq); } return status; @@ -159,15 +163,3 @@ int gettimeofday(struct timeval *tv, void *tz) { return 0; } #endif - -#ifndef HAVE_RANDOM -#include - -long int random(void) { - long int x; - - RAND_pseudo_bytes((unsigned char *)&x, sizeof(x)); - - return x; -} -#endif diff --git a/lib/dropin.h b/lib/dropin.h index 59a01d4..e9d1353 100644 --- a/lib/dropin.h +++ b/lib/dropin.h @@ -1,7 +1,7 @@ /* dropin.h -- header file for dropin.c Copyright (C) 2000-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: dropin.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __DROPIN_H__ @@ -36,19 +34,11 @@ extern char *get_current_dir_name(void); #ifndef HAVE_ASPRINTF extern int asprintf(char **, const char *, ...); -#endif - -#ifndef HAVE_GETNAMEINFO -extern int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, - size_t hostlen, char *serv, size_t servlen, int flags); +extern int vasprintf(char **, const char *, va_list ap); #endif #ifndef HAVE_GETTIMEOFDAY extern int gettimeofday(struct timeval *, void *); #endif -#ifndef HAVE_RANDOM -extern long int random(void); -#endif - #endif /* __DROPIN_H__ */ diff --git a/lib/ethernet.h b/lib/ethernet.h index 31e4e6f..eef5f42 100644 --- a/lib/ethernet.h +++ b/lib/ethernet.h @@ -13,11 +13,9 @@ 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. - - $Id: ethernet.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_ETHERNET_H__ diff --git a/lib/fake-gai-errnos.h b/lib/fake-gai-errnos.h index d1eb52b..4ffabb6 100644 --- a/lib/fake-gai-errnos.h +++ b/lib/fake-gai-errnos.h @@ -5,8 +5,6 @@ * 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 diff --git a/lib/fake-getaddrinfo.c b/lib/fake-getaddrinfo.c index 14420b5..10672b7 100644 --- a/lib/fake-getaddrinfo.c +++ b/lib/fake-getaddrinfo.c @@ -16,7 +16,7 @@ #include "fake-getaddrinfo.h" #include "xalloc.h" -#ifndef HAVE_GAI_STRERROR +#if !HAVE_DECL_GAI_STRERROR char *gai_strerror(int ecode) { switch (ecode) { @@ -32,7 +32,7 @@ char *gai_strerror(int ecode) } #endif /* !HAVE_GAI_STRERROR */ -#ifndef HAVE_FREEADDRINFO +#if !HAVE_DECL_FREEADDRINFO void freeaddrinfo(struct addrinfo *ai) { struct addrinfo *next; @@ -45,7 +45,7 @@ void freeaddrinfo(struct addrinfo *ai) } #endif /* !HAVE_FREEADDRINFO */ -#ifndef HAVE_GETADDRINFO +#if !HAVE_DECL_GETADDRINFO static struct addrinfo *malloc_ai(uint16_t port, uint32_t addr) { struct addrinfo *ai; diff --git a/lib/fake-getaddrinfo.h b/lib/fake-getaddrinfo.h index 112689f..5af7491 100644 --- a/lib/fake-getaddrinfo.h +++ b/lib/fake-getaddrinfo.h @@ -1,5 +1,3 @@ -/* $Id: fake-getaddrinfo.h 1374 2004-03-21 14:21:22Z guus $ */ - #ifndef _FAKE_GETADDRINFO_H #define _FAKE_GETADDRINFO_H @@ -33,16 +31,16 @@ struct addrinfo { }; #endif /* !HAVE_STRUCT_ADDRINFO */ -#ifndef HAVE_GETADDRINFO +#if !HAVE_DECL_GETADDRINFO int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res); #endif /* !HAVE_GETADDRINFO */ -#ifndef HAVE_GAI_STRERROR +#if !HAVE_DECL_GAI_STRERROR char *gai_strerror(int ecode); #endif /* !HAVE_GAI_STRERROR */ -#ifndef HAVE_FREEADDRINFO +#if !HAVE_DECL_FREEADDRINFO void freeaddrinfo(struct addrinfo *ai); #endif /* !HAVE_FREEADDRINFO */ diff --git a/lib/fake-getnameinfo.c b/lib/fake-getnameinfo.c index 796efdf..8047173 100644 --- a/lib/fake-getnameinfo.c +++ b/lib/fake-getnameinfo.c @@ -14,7 +14,7 @@ #include "fake-getnameinfo.h" #include "fake-getaddrinfo.h" -#ifndef HAVE_GETNAMEINFO +#if !HAVE_DECL_GETNAMEINFO int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) { diff --git a/lib/fake-getnameinfo.h b/lib/fake-getnameinfo.h index 5c3b0f3..4389a8f 100644 --- a/lib/fake-getnameinfo.h +++ b/lib/fake-getnameinfo.h @@ -1,9 +1,7 @@ -/* $Id: fake-getnameinfo.h 1374 2004-03-21 14:21:22Z guus $ */ - #ifndef _FAKE_GETNAMEINFO_H #define _FAKE_GETNAMEINFO_H -#ifndef HAVE_GETNAMEINFO +#if !HAVE_DECL_GETNAMEINFO int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags); #endif /* !HAVE_GETNAMEINFO */ diff --git a/lib/getopt.c b/lib/getopt.c index 5e397ba..b2f88b4 100644 --- a/lib/getopt.c +++ b/lib/getopt.c @@ -19,10 +19,10 @@ 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. */ +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., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ @@ -85,8 +85,6 @@ USA. */ #define getpid() GetCurrentProcessId() #endif -#include "gettext.h" - /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. @@ -669,7 +667,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (ambig && !exact) { if (opterr) - fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + fprintf (stderr, "%s: option `%s' is ambiguous\n", argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; @@ -693,12 +691,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, - _("%s: option `--%s' doesn't allow an argument\n"), + "%s: option `--%s' doesn't allow an argument\n", argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, - _("%s: option `%c%s' doesn't allow an argument\n"), + "%s: option `%c%s' doesn't allow an argument\n", argv[0], argv[optind - 1][0], pfound->name); nextchar += strlen (nextchar); @@ -715,7 +713,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) { if (opterr) fprintf (stderr, - _("%s: option `%s' requires an argument\n"), + "%s: option `%s' requires an argument\n", argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; @@ -744,11 +742,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) { if (argv[optind][1] == '-') /* --option */ - fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + fprintf (stderr, "%s: unrecognized option `--%s'\n", argv[0], nextchar); else /* +option or -option */ - fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + fprintf (stderr, "%s: unrecognized option `%c%s'\n", argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; @@ -774,10 +772,10 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: illegal option -- %c\n"), + fprintf (stderr, "%s: illegal option -- %c\n", argv[0], c); else - fprintf (stderr, _("%s: invalid option -- %c\n"), + fprintf (stderr, "%s: invalid option -- %c\n", argv[0], c); } optopt = c; @@ -807,7 +805,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (opterr) { /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: option requires an argument -- %c\n"), + fprintf (stderr, "%s: option requires an argument -- %c\n", argv[0], c); } optopt = c; @@ -854,7 +852,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (ambig && !exact) { if (opterr) - fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + fprintf (stderr, "%s: option `-W %s' is ambiguous\n", argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; @@ -872,8 +870,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) else { if (opterr) - fprintf (stderr, _("\ -%s: option `-W %s' doesn't allow an argument\n"), + fprintf (stderr, + "%s: option `-W %s' doesn't allow an argument\n", argv[0], pfound->name); nextchar += strlen (nextchar); @@ -888,7 +886,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) { if (opterr) fprintf (stderr, - _("%s: option `%s' requires an argument\n"), + "%s: option `%s' requires an argument\n", argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; @@ -937,7 +935,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, - _("%s: option requires an argument -- %c\n"), + "%s: option requires an argument -- %c\n", argv[0], c); } optopt = c; diff --git a/lib/getopt.h b/lib/getopt.h index 69256fd..ddf6fdd 100644 --- a/lib/getopt.h +++ b/lib/getopt.h @@ -14,10 +14,10 @@ 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. */ +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., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ #ifndef _GETOPT_H #define _GETOPT_H 1 diff --git a/lib/getopt1.c b/lib/getopt1.c index 6507ba1..86545f2 100644 --- a/lib/getopt1.c +++ b/lib/getopt1.c @@ -14,10 +14,10 @@ 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. */ +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., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ #ifdef HAVE_CONFIG_H #include diff --git a/lib/gettext.h b/lib/gettext.h deleted file mode 100644 index a907403..0000000 --- a/lib/gettext.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Convenience header for conditional use of GNU . - 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 -# include - -/* 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 a NOP. We don't include - as well because people using "gettext.h" will not include , - and also including would fail on SunOS 4, whereas - is OK. */ -#if defined(__sun) -# include -#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 */ diff --git a/lib/ipv4.h b/lib/ipv4.h index 56578fa..80ab17c 100644 --- a/lib/ipv4.h +++ b/lib/ipv4.h @@ -13,11 +13,9 @@ 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. - - $Id: ipv4.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_IPV4_H__ diff --git a/lib/ipv6.h b/lib/ipv6.h index 66874a2..fee74f5 100644 --- a/lib/ipv6.h +++ b/lib/ipv6.h @@ -13,11 +13,9 @@ 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. - - $Id: ipv6.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_IPV6_H__ diff --git a/lib/list.c b/lib/list.c index 31ad17b..a26c58d 100644 --- a/lib/list.c +++ b/lib/list.c @@ -13,11 +13,9 @@ 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. - - $Id: list.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -27,8 +25,7 @@ /* (De)constructors */ -list_t *list_alloc(list_action_t delete) -{ +list_t *list_alloc(list_action_t delete) { list_t *list; list = xmalloc_and_zero(sizeof(list_t)); @@ -37,18 +34,15 @@ list_t *list_alloc(list_action_t delete) return list; } -void list_free(list_t *list) -{ +void list_free(list_t *list) { free(list); } -list_node_t *list_alloc_node(void) -{ +list_node_t *list_alloc_node(void) { return xmalloc_and_zero(sizeof(list_node_t)); } -void list_free_node(list_t *list, list_node_t *node) -{ +void list_free_node(list_t *list, list_node_t *node) { if(node->data && list->delete) list->delete(node->data); @@ -57,8 +51,7 @@ void list_free_node(list_t *list, list_node_t *node) /* Insertion and deletion */ -list_node_t *list_insert_head(list_t *list, void *data) -{ +list_node_t *list_insert_head(list_t *list, void *data) { list_node_t *node; node = list_alloc_node(); @@ -78,8 +71,7 @@ list_node_t *list_insert_head(list_t *list, void *data) return node; } -list_node_t *list_insert_tail(list_t *list, void *data) -{ +list_node_t *list_insert_tail(list_t *list, void *data) { list_node_t *node; node = list_alloc_node(); @@ -99,8 +91,7 @@ list_node_t *list_insert_tail(list_t *list, void *data) return node; } -void list_unlink_node(list_t *list, list_node_t *node) -{ +void list_unlink_node(list_t *list, list_node_t *node) { if(node->prev) node->prev->next = node->next; else @@ -114,34 +105,29 @@ void list_unlink_node(list_t *list, list_node_t *node) list->count--; } -void list_delete_node(list_t *list, list_node_t *node) -{ +void list_delete_node(list_t *list, list_node_t *node) { list_unlink_node(list, node); list_free_node(list, node); } -void list_delete_head(list_t *list) -{ +void list_delete_head(list_t *list) { list_delete_node(list, list->head); } -void list_delete_tail(list_t *list) -{ +void list_delete_tail(list_t *list) { list_delete_node(list, list->tail); } /* Head/tail lookup */ -void *list_get_head(list_t *list) -{ +void *list_get_head(list_t *list) { if(list->head) return list->head->data; else return NULL; } -void *list_get_tail(list_t *list) -{ +void *list_get_tail(list_t *list) { if(list->tail) return list->tail->data; else @@ -150,8 +136,7 @@ void *list_get_tail(list_t *list) /* Fast list deletion */ -void list_delete_list(list_t *list) -{ +void list_delete_list(list_t *list) { list_node_t *node, *next; for(node = list->head; node; node = next) { @@ -164,8 +149,7 @@ void list_delete_list(list_t *list) /* Traversing */ -void list_foreach_node(list_t *list, list_action_node_t action) -{ +void list_foreach_node(list_t *list, list_action_node_t action) { list_node_t *node, *next; for(node = list->head; node; node = next) { @@ -174,8 +158,7 @@ void list_foreach_node(list_t *list, list_action_node_t action) } } -void list_foreach(list_t *list, list_action_t action) -{ +void list_foreach(list_t *list, list_action_t action) { list_node_t *node, *next; for(node = list->head; node; node = next) { diff --git a/lib/list.h b/lib/list.h index 61584bf..197fbb8 100644 --- a/lib/list.h +++ b/lib/list.h @@ -13,11 +13,9 @@ 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. - - $Id: list.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_LIST_H__ diff --git a/lib/malloc.c b/lib/malloc.c index b859e58..2a996d4 100644 --- a/lib/malloc.c +++ b/lib/malloc.c @@ -11,9 +11,9 @@ 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. */ + 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., Foundation, + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* written by Jim Meyering */ diff --git a/lib/memcmp.c b/lib/memcmp.c index 1226947..9d80833 100644 --- a/lib/memcmp.c +++ b/lib/memcmp.c @@ -14,10 +14,10 @@ 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. */ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ #ifdef HAVE_CONFIG_H # include "config.h" diff --git a/lib/pidfile.c b/lib/pidfile.c index 830d3f3..47f6359 100644 --- a/lib/pidfile.c +++ b/lib/pidfile.c @@ -14,9 +14,9 @@ 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, USA + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* left unaltered for tinc -- Ivo Timmermans */ @@ -41,7 +41,8 @@ pid_t read_pid (char *pidfile) if (!(f=fopen(pidfile,"r"))) return 0; - fscanf(f,"%ld", &pid); + if(fscanf(f,"%ld", &pid) != 1) + pid = 0; fclose(f); return pid; } diff --git a/lib/pidfile.h b/lib/pidfile.h index 152ae2c..d7b970c 100644 --- a/lib/pidfile.h +++ b/lib/pidfile.h @@ -14,9 +14,9 @@ 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, USA. + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef HAVE_MINGW diff --git a/lib/realloc.c b/lib/realloc.c index d0d3e4a..4971b28 100644 --- a/lib/realloc.c +++ b/lib/realloc.c @@ -11,9 +11,9 @@ 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. */ + 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., Foundation, + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* written by Jim Meyering */ diff --git a/lib/utils.c b/lib/utils.c index 4b93b04..dd7e4de 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -1,7 +1,7 @@ /* utils.c -- gathering of some stupid small functions - Copyright (C) 1999-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + Copyright (C) 1999-2005 Ivo Timmermans + 2000-2009 Guus Sliepen 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 @@ -13,9 +13,9 @@ 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. + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -23,16 +23,9 @@ #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 +const char hexadecimals[] = "0123456789ABCDEF"; -char *hexadecimals = "0123456789ABCDEF"; - -int charhex2bin(char c) -{ +int charhex2bin(char c) { if(isdigit(c)) return c - '0'; else @@ -40,15 +33,13 @@ int charhex2bin(char c) } -void hex2bin(char *src, char *dst, int length) -{ +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) -{ +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]; @@ -56,41 +47,17 @@ void bin2hex(char *src, char *dst, int length) } } -#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 #endif -char *winerror(int err) { +const 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)); + strncpy(buf, "(unable to format errormessage)", sizeof(buf)); }; if((newline = strchr(buf, '\r'))) @@ -100,3 +67,10 @@ char *winerror(int err) { } #endif +unsigned int bitfield_to_int(void *bitfield, size_t size) { + unsigned int value = 0; + if(size > sizeof value) + size = sizeof value; + memcpy(&value, bitfield, size); + return value; +} diff --git a/lib/utils.h b/lib/utils.h index 6ff2082..c6fb180 100644 --- a/lib/utils.h +++ b/lib/utils.h @@ -1,7 +1,7 @@ /* utils.h -- header file for utils.c - Copyright (C) 1999-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + Copyright (C) 1999-2005 Ivo Timmermans + 2000-2009 Guus Sliepen 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 @@ -13,34 +13,22 @@ 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. + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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); +extern const char *winerror(int); #define strerror(x) ((x)>0?strerror(x):winerror(GetLastError())) #endif +extern unsigned int bitfield_to_int(void *bitfield, size_t size); + #endif /* __TINC_UTILS_H__ */ diff --git a/lib/xalloc.h b/lib/xalloc.h index 7cb486a..51f99bd 100644 --- a/lib/xalloc.h +++ b/lib/xalloc.h @@ -24,3 +24,6 @@ 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__)); + +extern int xasprintf(char **strp, const char *fmt, ...); +extern int xvasprintf(char **strp, const char *fmt, va_list ap); diff --git a/lib/xmalloc.c b/lib/xmalloc.c index d02f41b..4e79aff 100644 --- a/lib/xmalloc.c +++ b/lib/xmalloc.c @@ -11,9 +11,9 @@ 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. */ + 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., Foundation, + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #if HAVE_CONFIG_H # include @@ -22,6 +22,8 @@ #include #include #include +#include +#include #if STDC_HEADERS # include @@ -32,7 +34,7 @@ void *realloc (); void free (); #endif -#include "gettext.h" +#include "dropin.h" #include "xalloc.h" #ifndef EXIT_FAILURE @@ -51,7 +53,7 @@ void *xrealloc (void *p, size_t n); int xalloc_exit_failure = EXIT_FAILURE; /* FIXME: describe */ -char *const xalloc_msg_memory_exhausted = N_("Memory exhausted"); +char *const xalloc_msg_memory_exhausted = "Memory exhausted"; /* FIXME: describe */ void (*xalloc_fail_func) (int) = 0; @@ -138,3 +140,21 @@ xcalloc (n, s) } #endif /* NOT_USED */ + +int xasprintf(char **strp, const char *fmt, ...) { + int result; + va_list ap; + va_start(ap, fmt); + result = xvasprintf(strp, fmt, ap); + va_end(ap); + return result; +} + +int xvasprintf(char **strp, const char *fmt, va_list ap) { + int result = vasprintf(strp, fmt, ap); + if(result < 0) { + fprintf(stderr, "vasprintf() failed: %s\n", strerror(errno)); + exit(xalloc_exit_failure); + } + return result; +} diff --git a/m4/Makefile.in b/m4/Makefile.in index 44c662e..f585238 100644 --- a/m4/Makefile.in +++ b/m4/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11 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. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,8 +16,9 @@ @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -35,17 +37,14 @@ 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/lzo.m4 $(top_srcdir)/m4/openssl.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 +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -69,7 +68,6 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ GREP = @GREP@ INCLUDES = @INCLUDES@ INSTALL = @INSTALL@ @@ -77,38 +75,28 @@ 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_URL = @PACKAGE_URL@ 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@ @@ -156,6 +144,7 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = README *.m4 @@ -166,14 +155,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu m4/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -191,6 +180,7 @@ $(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 +$(am__aclocal_m4_deps): tags: TAGS TAGS: @@ -214,13 +204,17 @@ distdir: $(DISTFILES) 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; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 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 \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -248,6 +242,7 @@ clean-generic: distclean-generic: -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: @echo "This command is intended for maintainers to use" @@ -266,6 +261,8 @@ dvi-am: html: html-am +html-am: + info: info-am info-am: @@ -274,18 +271,28 @@ install-data-am: install-dvi: install-dvi-am +install-dvi-am: + install-exec-am: install-html: install-html-am +install-html-am: + install-info: install-info-am +install-info-am: + install-man: install-pdf: install-pdf-am +install-pdf-am: + install-ps: install-ps-am +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -318,6 +325,7 @@ uninstall-am: 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: diff --git a/m4/codeset.m4 b/m4/codeset.m4 deleted file mode 100644 index 59535eb..0000000 --- a/m4/codeset.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 deleted file mode 100644 index a374f03..0000000 --- a/m4/gettext.m4 +++ /dev/null @@ -1,487 +0,0 @@ -# gettext.m4 serial 28 (gettext-0.13) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Set USE_NLS. - AM_NLS - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl For backward compatibility. Some Makefiles may be using this. - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST(INTLOBJS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([bh_C_SIGNED])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl - AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl - AC_REQUIRE([gt_TYPE_WCHAR_T])dnl - AC_REQUIRE([gt_TYPE_WINT_T])dnl - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - AC_REQUIRE([gt_TYPE_INTMAX_T]) - AC_REQUIRE([gt_PRINTF_POSIX]) - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - AC_REQUIRE([gl_XSIZE])dnl - - AC_CHECK_TYPE([ptrdiff_t], , - [AC_DEFINE([ptrdiff_t], [long], - [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) - ]) - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -__fsetlocking]) - - dnl Use the _snprintf function only if it is declared (because on NetBSD it - dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include ]) - gt_CHECK_DECL(_snwprintf, [#include ]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(feof_unlocked, [#include ]) - gt_CHECK_DECL(fgets_unlocked, [#include ]) - gt_CHECK_DECL(getc_unlocked, [#include ]) - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - AC_SUBST([HAVE_POSIX_PRINTF]) - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - AC_SUBST([HAVE_ASPRINTF]) - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - AC_SUBST([HAVE_SNPRINTF]) - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - AC_SUBST([HAVE_WPRINTF]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - AM_LC_MESSAGES - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -dnl gt_CHECK_DECL(FUNC, INCLUDES) -dnl Check whether a function is declared. -AC_DEFUN([gt_CHECK_DECL], -[ - AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; -#endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/glibc21.m4 b/m4/glibc21.m4 deleted file mode 100644 index 9c9f3db..0000000 --- a/m4/glibc21.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) diff --git a/m4/iconv.m4 b/m4/iconv.m4 deleted file mode 100644 index c5f3579..0000000 --- a/m4/iconv.m4 +++ /dev/null @@ -1,103 +0,0 @@ -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -#include ], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4 deleted file mode 100644 index 55dddcf..0000000 --- a/m4/intdiv0.m4 +++ /dev/null @@ -1,72 +0,0 @@ -# intdiv0.m4 serial 1 (gettext-0.11.3) -dnl Copyright (C) 2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([gt_INTDIV0], -[ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - AC_TRY_RUN([ -#include -#include - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, - [ - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - ]) - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, - [Define if integer division by zero raises signal SIGFPE.]) -]) diff --git a/m4/intmax.m4 b/m4/intmax.m4 deleted file mode 100644 index dfb08cc..0000000 --- a/m4/intmax.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# intmax.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. -dnl Test whether the system has the 'intmax_t' type, but don't attempt to -dnl find a replacement if it is lacking. - -AC_DEFUN([gt_TYPE_INTMAX_T], -[ - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, - [AC_TRY_COMPILE([ -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif -], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) - if test $gt_cv_c_intmax_t = yes; then - AC_DEFINE(HAVE_INTMAX_T, 1, - [Define if you have the 'intmax_t' type in or .]) - fi -]) diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4 deleted file mode 100644 index fd007c3..0000000 --- a/m4/inttypes-pri.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# inttypes-pri.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -# Define PRI_MACROS_BROKEN if exists and defines the PRI* -# macros to non-string values. This is the case on AIX 4.3.3. - -AC_DEFUN([gt_INTTYPES_PRI], -[ - AC_REQUIRE([gt_HEADER_INTTYPES_H]) - if test $gt_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - gt_cv_inttypes_pri_broken, - [ - AC_TRY_COMPILE([#include -#ifdef PRId32 -char *p = PRId32; -#endif -], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, - [Define if exists and defines unusable PRI* macros.]) - fi -]) diff --git a/m4/inttypes.m4 b/m4/inttypes.m4 deleted file mode 100644 index ab370ff..0000000 --- a/m4/inttypes.m4 +++ /dev/null @@ -1,27 +0,0 @@ -# inttypes.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H if exists and doesn't clash with -# . - -AC_DEFUN([gt_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, - [ - AC_TRY_COMPILE( - [#include -#include ], - [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) - ]) - if test $gt_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, - [Define if exists and doesn't clash with .]) - fi -]) diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4 deleted file mode 100644 index f342eba..0000000 --- a/m4/inttypes_h.m4 +++ /dev/null @@ -1,28 +0,0 @@ -# inttypes_h.m4 serial 5 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_inttypes_h=yes, - jm_ac_cv_header_inttypes_h=no)]) - if test $jm_ac_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) diff --git a/m4/isc-posix.m4 b/m4/isc-posix.m4 deleted file mode 100644 index 1319dd1..0000000 --- a/m4/isc-posix.m4 +++ /dev/null @@ -1,26 +0,0 @@ -# isc-posix.m4 serial 2 (gettext-0.11.2) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4 deleted file mode 100644 index ffd4008..0000000 --- a/m4/lcmessage.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# lcmessage.m4 serial 3 (gettext-0.11.3) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995. - -# Check whether LC_MESSAGES is available in . - -AC_DEFUN([AM_LC_MESSAGES], -[ - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi -]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 deleted file mode 100644 index 38aeaec..0000000 --- a/m4/lib-ld.m4 +++ /dev/null @@ -1,112 +0,0 @@ -# lib-ld.m4 serial 3 (gettext-0.13) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 deleted file mode 100644 index eeb200d..0000000 --- a/m4/lib-link.m4 +++ /dev/null @@ -1,551 +0,0 @@ -# lib-link.m4 serial 4 (gettext-0.12) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE(rpath, - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 deleted file mode 100644 index 8aff5a9..0000000 --- a/m4/lib-prefix.m4 +++ /dev/null @@ -1,155 +0,0 @@ -# lib-prefix.m4 serial 3 (gettext-0.13) -dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) diff --git a/m4/longdouble.m4 b/m4/longdouble.m4 deleted file mode 100644 index 1333d2f..0000000 --- a/m4/longdouble.m4 +++ /dev/null @@ -1,30 +0,0 @@ -# longdouble.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. -dnl Test whether the compiler supports the 'long double' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_LONGDOUBLE], -[ - AC_CACHE_CHECK([for long double], gt_cv_c_long_double, - [if test "$GCC" = yes; then - gt_cv_c_long_double=yes - else - AC_TRY_COMPILE([ - /* The Stardent Vistra knows sizeof(long double), but does not support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - int array [2*(sizeof(long double) >= sizeof(double)) - 1]; - ], , - gt_cv_c_long_double=yes, gt_cv_c_long_double=no) - fi]) - if test $gt_cv_c_long_double = yes; then - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) - fi -]) diff --git a/m4/longlong.m4 b/m4/longlong.m4 deleted file mode 100644 index d7d7350..0000000 --- a/m4/longlong.m4 +++ /dev/null @@ -1,25 +0,0 @@ -# longlong.m4 serial 4 -dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_LONG_LONG if 'long long' works. - -AC_DEFUN([jm_AC_TYPE_LONG_LONG], -[ - AC_CACHE_CHECK([for long long], ac_cv_type_long_long, - [AC_TRY_LINK([long long ll = 1LL; int i = 63;], - [long long llmax = (long long) -1; - return ll << i | ll >> i | llmax / ll | llmax % ll;], - ac_cv_type_long_long=yes, - ac_cv_type_long_long=no)]) - if test $ac_cv_type_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, - [Define if you have the 'long long' type.]) - fi -]) diff --git a/m4/nls.m4 b/m4/nls.m4 deleted file mode 100644 index 36bc493..0000000 --- a/m4/nls.m4 +++ /dev/null @@ -1,49 +0,0 @@ -# nls.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) -]) - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate it. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - case "$ac_aux_dir" in - /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; - *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; - esac - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) diff --git a/m4/po.m4 b/m4/po.m4 deleted file mode 100644 index e161998..0000000 --- a/m4/po.m4 +++ /dev/null @@ -1,426 +0,0 @@ -# po.m4 serial 3 (gettext-0.14) -dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - -dnl Postprocesses a Makefile in a directory containing PO files. -AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -[ - # When this code is run, in config.status, two variables have already been - # set: - # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, - # - LINGUAS is the value of the environment variable LINGUAS at configure - # time. - -changequote(,)dnl - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - # Find a way to echo strings without interpreting backslash. - if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='echo' - else - if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='printf %s\n' - else - echo_func () { - cat < "$ac_file.tmp" - if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - cat >> "$ac_file.tmp" < /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/_/-/g'` - cat >> "$ac_file.tmp" <> "$ac_file.tmp" < -#include -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 0); -}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, - [ - AC_EGREP_CPP(notposix, [ -#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - ], gt_cv_func_printf_posix="guessing no", - gt_cv_func_printf_posix="guessing yes") - ]) - ]) - case $gt_cv_func_printf_posix in - *yes) - AC_DEFINE(HAVE_POSIX_PRINTF, 1, - [Define if your printf() function supports format strings with positions.]) - ;; - esac -]) diff --git a/m4/progtest.m4 b/m4/progtest.m4 deleted file mode 100644 index 8fe527c..0000000 --- a/m4/progtest.m4 +++ /dev/null @@ -1,91 +0,0 @@ -# progtest.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) diff --git a/m4/signed.m4 b/m4/signed.m4 deleted file mode 100644 index dc1f54f..0000000 --- a/m4/signed.m4 +++ /dev/null @@ -1,19 +0,0 @@ -# signed.m4 serial 1 (gettext-0.10.40) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([bh_C_SIGNED], -[ - AC_CACHE_CHECK([for signed], bh_cv_c_signed, - [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) - if test $bh_cv_c_signed = no; then - AC_DEFINE(signed, , - [Define to empty if the C compiler doesn't support this keyword.]) - fi -]) diff --git a/m4/size_max.m4 b/m4/size_max.m4 deleted file mode 100644 index 5762fc3..0000000 --- a/m4/size_max.m4 +++ /dev/null @@ -1,61 +0,0 @@ -# size_max.m4 serial 2 -dnl Copyright (C) 2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([gl_SIZE_MAX], -[ - AC_CHECK_HEADERS(stdint.h) - dnl First test whether the system already has SIZE_MAX. - AC_MSG_CHECKING([for SIZE_MAX]) - result= - AC_EGREP_CPP([Found it], [ -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif -], result=yes) - if test -z "$result"; then - dnl Define it ourselves. Here we assume that the type 'size_t' is not wider - dnl than the type 'unsigned long'. - dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', - dnl which is guaranteed to work from LONG_MIN to LONG_MAX. - _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, - [#include ], result=?) - _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, - [#include ], result=?) - _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, - [#include ], result=?) - if test "$fits_in_uint" = 1; then - dnl Even though SIZE_MAX fits in an unsigned int, it must be of type - dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include - extern size_t foo; - extern unsigned long foo; - ], [], fits_in_uint=0) - fi - if test -z "$result"; then - if test "$fits_in_uint" = 1; then - result="$res_hi$res_lo"U - else - result="$res_hi$res_lo"UL - fi - else - dnl Shouldn't happen, but who knows... - result='~(size_t)0' - fi - fi - AC_MSG_RESULT([$result]) - if test "$result" != yes; then - AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], - [Define as the maximum value of type 'size_t', if the system doesn't define it.]) - fi -]) diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4 deleted file mode 100644 index 32ba7ae..0000000 --- a/m4/stdint_h.m4 +++ /dev/null @@ -1,28 +0,0 @@ -# stdint_h.m4 serial 3 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if exists, -# doesn't clash with , and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_stdint_h=yes, - jm_ac_cv_header_stdint_h=no)]) - if test $jm_ac_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4 deleted file mode 100644 index b5f28d4..0000000 --- a/m4/uintmax_t.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# uintmax_t.m4 serial 7 (gettext-0.12) -dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_PREREQ(2.13) - -# Define uintmax_t to 'unsigned long' or 'unsigned long long' -# if it is not already defined in or . - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to unsigned long or unsigned long long - if and don't define.]) - else - AC_DEFINE(HAVE_UINTMAX_T, 1, - [Define if you have the 'uintmax_t' type in or .]) - fi -]) diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4 deleted file mode 100644 index 1da8b80..0000000 --- a/m4/ulonglong.m4 +++ /dev/null @@ -1,25 +0,0 @@ -# ulonglong.m4 serial 3 -dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the 'unsigned long long' type.]) - fi -]) diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4 deleted file mode 100644 index d8fd1ec..0000000 --- a/m4/wchar_t.m4 +++ /dev/null @@ -1,22 +0,0 @@ -# wchar_t.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. -dnl Test whether has the 'wchar_t' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WCHAR_T], -[ - AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, - [AC_TRY_COMPILE([#include - wchar_t foo = (wchar_t)'\0';], , - gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) - if test $gt_cv_c_wchar_t = yes; then - AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) - fi -]) diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 deleted file mode 100644 index 3d8d215..0000000 --- a/m4/wint_t.m4 +++ /dev/null @@ -1,22 +0,0 @@ -# wint_t.m4 serial 1 (gettext-0.12) -dnl Copyright (C) 2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. -dnl Test whether has the 'wint_t' type. -dnl Prerequisite: AC_PROG_CC - -AC_DEFUN([gt_TYPE_WINT_T], -[ - AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, - [AC_TRY_COMPILE([#include - wint_t foo = (wchar_t)'\0';], , - gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) - if test $gt_cv_c_wint_t = yes; then - AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) - fi -]) diff --git a/m4/xsize.m4 b/m4/xsize.m4 deleted file mode 100644 index 9b7cf9b..0000000 --- a/m4/xsize.m4 +++ /dev/null @@ -1,14 +0,0 @@ -# xsize.m4 serial 2 -dnl Copyright (C) 2003 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -AC_DEFUN([gl_XSIZE], -[ - dnl Prerequisites of lib/xsize.h. - AC_REQUIRE([gl_SIZE_MAX]) - AC_CHECK_HEADERS(stdint.h) -]) diff --git a/missing b/missing index 1c8ff70..28055d2 100755 --- a/missing +++ b/missing @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2006-05-10.23 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -18,9 +18,7 @@ scriptversion=2006-05-10.23 # 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -89,6 +87,9 @@ Supported PROGRAM values: tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + Send bug reports to ." exit $? ;; @@ -106,15 +107,22 @@ Send bug reports to ." esac +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect -# the program). +# the program). This is about non-GNU programs, so use $1 not +# $program. case $1 in - lex|yacc) + lex*|yacc*) # Not GNU programs, they don't have --version. ;; - tar) + tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 @@ -138,7 +146,7 @@ esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. -case $1 in +case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if @@ -148,7 +156,7 @@ WARNING: \`$1' is $msg. You should only need it if touch aclocal.m4 ;; - autoconf) + autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the @@ -157,7 +165,7 @@ WARNING: \`$1' is $msg. You should only need it if touch configure ;; - autoheader) + autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want @@ -187,7 +195,7 @@ WARNING: \`$1' is $msg. You should only need it if while read f; do touch "$f"; done ;; - autom4te) + autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the @@ -210,7 +218,7 @@ WARNING: \`$1' is needed, but is $msg. fi ;; - bison|yacc) + bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package @@ -240,7 +248,7 @@ WARNING: \`$1' $msg. You should only need it if fi ;; - lex|flex) + lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package @@ -263,7 +271,7 @@ WARNING: \`$1' is $msg. You should only need it if fi ;; - help2man) + help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the @@ -277,11 +285,11 @@ WARNING: \`$1' is $msg. You should only need it if else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit 1 + exit $? fi ;; - makeinfo) + makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file @@ -310,7 +318,7 @@ WARNING: \`$1' is $msg. You should only need it if touch $file ;; - tar) + tar*) shift # We have already tried tar in the generic part. @@ -363,5 +371,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/mkinstalldirs b/mkinstalldirs deleted file mode 100755 index ef7e16f..0000000 --- a/mkinstalldirs +++ /dev/null @@ -1,161 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2006-05-11.19 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' -IFS=" "" $nl" -errstatus=0 -dirmode= - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit $? - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit $? - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - case $file in - /*) pathcomp=/ ;; - *) pathcomp= ;; - esac - oIFS=$IFS - IFS=/ - set fnord $file - shift - IFS=$oIFS - - for d - do - test "x$d" = x && continue - - pathcomp=$pathcomp$d - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr= - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp=$pathcomp/ - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/po/Makefile.in.in b/po/Makefile.in.in deleted file mode 100644 index 53efc5e..0000000 --- a/po/Makefile.in.in +++ /dev/null @@ -1,366 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. -# -# Origin: gettext-0.14 - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge -MSGMERGE_UPDATE = @MSGMERGE@ --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in remove-potcdate.sin \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update - -.po.mo: - @echo "$(MSGFMT) -c -o $@ $<"; \ - $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo - -.sin.sed: - sed -e '/^#/d' $< > t-$@ - mv t-$@ $@ - - -all: all-@USE_NLS@ - -all-yes: stamp-po -all-no: - -# stamp-po is a timestamp denoting the last time at which the CATALOGS have -# been loosely updated. Its purpose is that when a developer or translator -# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, -# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent -# invocations of "make" will do nothing. This timestamp would not be necessary -# if updating the $(CATALOGS) would always touch them; however, the rule for -# $(POFILES) has been designed to not touch files that don't need to be -# changed. -stamp-po: $(srcdir)/$(DOMAIN).pot - test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) - @echo "touch stamp-po" - @echo timestamp > stamp-poT - @mv stamp-poT stamp-po - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -# This target rebuilds $(DOMAIN).pot; it is an expensive operation. -# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' - test ! -f $(DOMAIN).po || { \ - if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ - fi; \ - } - -# This rule has no dependencies: we don't need to update $(DOMAIN).pot at -# every "make" invocation, only create it when it is missing. -# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -# This target rebuilds a PO file if $(DOMAIN).pot has changed. -# Note that a PO file is not touched if it doesn't need to be changed. -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - if test -f "$(srcdir)/$${lang}.po"; then \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ - else \ - $(MAKE) $${lang}.po-create; \ - fi - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common) Makevars.template; do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - for file in Makevars; do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext-tools"; then \ - for file in $(DISTFILES.common) Makevars.template; do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -info dvi ps pdf html tags TAGS ctags CTAGS ID: - -mostlyclean: - rm -f remove-potcdate.sed - rm -f stamp-poT - rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f stamp-po $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test "$(PACKAGE)" = "gettext-tools"; then \ - dists="$$dists Makevars.template"; \ - fi; \ - if test -f $(srcdir)/ChangeLog; then \ - dists="$$dists ChangeLog"; \ - fi; \ - for i in 0 1 2 3 4 5 6 7 8 9; do \ - if test -f $(srcdir)/ChangeLog.$$i; then \ - dists="$$dists ChangeLog.$$i"; \ - fi; \ - done; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for creating PO files. - -.nop.po-create: - @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ - echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ - exit 1 - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/po/Makevars b/po/Makevars deleted file mode 100644 index 485b60e..0000000 --- a/po/Makevars +++ /dev/null @@ -1,41 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Ivo Timmermans and Guus Sliepen - -# This is the email address or URL to which the translators shall report -# bugs in the untranslated strings: -# - Strings which are not entire sentences, see the maintainer guidelines -# in the GNU gettext documentation, section 'Preparing Strings'. -# - Strings which use unclear terms or require additional context to be -# understood. -# - Strings which make invalid assumptions about notation of date, time or -# money. -# - Pluralisation problems. -# - Incorrect English spelling. -# - Incorrect formatting. -# It can be your email address, or a mailing list address where translators -# can write to without being subscribed, or the URL of a web page through -# which the translators can contact you. -MSGID_BUGS_ADDRESS = tinc-devel@tinc-vpn.org - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index e1df6e7..0000000 --- a/po/POTFILES.in +++ /dev/null @@ -1,35 +0,0 @@ -# List of files which contain translatable strings. -# Copyright (C) 1999,2000 Ivo Timmermans - -# Package source files - -lib/pidfile.c -lib/utils.c -src/conf.c -src/connection.c -src/meta.c -src/net.c -src/net_packet.c -src/net_setup.c -src/net_socket.c -src/netutl.c -src/protocol.c -src/protocol_auth.c -src/protocol_edge.c -src/protocol_key.c -src/protocol_misc.c -src/protocol_subnet.c -src/subnet.c -src/tincd.c -src/process.c -src/route.c -src/node.c -src/edge.c -src/graph.c -src/linux/device.c -src/solaris/device.c -src/bsd/device.c -src/cygwin/device.c -src/mingw/device.c -src/raw_socket/device.c -src/uml_socket/device.c diff --git a/po/Rules-quot b/po/Rules-quot deleted file mode 100644 index 9c2a995..0000000 --- a/po/Rules-quot +++ /dev/null @@ -1,47 +0,0 @@ -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-create: - $(MAKE) en@quot.po-update -en@boldquot.po-create: - $(MAKE) en@boldquot.po-update - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed deleted file mode 100644 index 4b937aa..0000000 --- a/po/boldquot.sed +++ /dev/null @@ -1,10 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g -s/“/“/g -s/”/”/g -s/‘/‘/g -s/’/’/g diff --git a/po/en@boldquot.header b/po/en@boldquot.header deleted file mode 100644 index fedb6a0..0000000 --- a/po/en@boldquot.header +++ /dev/null @@ -1,25 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# -# This catalog furthermore displays the text between the quotation marks in -# bold face, assuming the VT100/XTerm escape sequences. -# diff --git a/po/en@quot.header b/po/en@quot.header deleted file mode 100644 index a9647fc..0000000 --- a/po/en@quot.header +++ /dev/null @@ -1,22 +0,0 @@ -# All this catalog "translates" are quotation characters. -# The msgids must be ASCII and therefore cannot contain real quotation -# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -# and double quote (0x22). These substitutes look strange; see -# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -# -# This catalog translates grave accent (0x60) and apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019). -# It also translates pairs of apostrophe (0x27) to -# left single quotation mark (U+2018) and right single quotation mark (U+2019) -# and pairs of quotation mark (0x22) to -# left double quotation mark (U+201C) and right double quotation mark (U+201D). -# -# When output to an UTF-8 terminal, the quotation characters appear perfectly. -# When output to an ISO-8859-1 terminal, the single quotation marks are -# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -# grave/acute accent (by libiconv), and the double quotation marks are -# transliterated to 0x22. -# When output to an ASCII terminal, the single quotation marks are -# transliterated to apostrophes, and the double quotation marks are -# transliterated to 0x22. -# diff --git a/po/insert-header.sin b/po/insert-header.sin deleted file mode 100644 index b26de01..0000000 --- a/po/insert-header.sin +++ /dev/null @@ -1,23 +0,0 @@ -# Sed script that inserts the file called HEADER before the header entry. -# -# At each occurrence of a line starting with "msgid ", we execute the following -# commands. At the first occurrence, insert the file. At the following -# occurrences, do nothing. The distinction between the first and the following -# occurrences is achieved by looking at the hold space. -/^msgid /{ -x -# Test if the hold space is empty. -s/m/m/ -ta -# Yes it was empty. First occurrence. Read the file. -r HEADER -# Output the file's contents by reading the next line. But don't lose the -# current line while doing this. -g -N -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/po/nl.gmo b/po/nl.gmo deleted file mode 100644 index fba538e..0000000 Binary files a/po/nl.gmo and /dev/null differ diff --git a/po/nl.po b/po/nl.po deleted file mode 100644 index 1c60b28..0000000 --- a/po/nl.po +++ /dev/null @@ -1,1623 +0,0 @@ -# Dutch messages for tinc -# Copyright (C) 1999-2008 Ivo Timmermans, Guus Sliepen. -# Ivo Timmermans , 1999-2006. -# Guus Sliepen , 2000-2008. -msgid "" -msgstr "" -"Project-Id-Version: tinc 1.0-svn\n" -"Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n" -"POT-Creation-Date: 2008-12-24 11:43+0100\n" -"PO-Revision-Date: 2008-12-24 11:45+0100\n" -"Last-Translator: Guus Sliepen \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/utils.c:93 -msgid "(unable to format errormessage)" -msgstr "(kon foutmelding niet samenstellen)" - -#: src/conf.c:160 -#, c-format -msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d" -msgstr "" -"\"ja\" of \"nee\" verwacht voor configuratievariabele %s in %s regel %d" - -#: src/conf.c:176 -#, c-format -msgid "Integer expected for configuration variable %s in %s line %d" -msgstr "Geheel getal verwacht voor configuratievariabele %s in %s regel %d" - -#: src/conf.c:210 -#, c-format -msgid "" -"Hostname or IP address expected for configuration variable %s in %s line %d" -msgstr "" -"Hostnaam of IP adres verwacht voor configuratievariabele %s in %s regel %d" - -#: src/conf.c:226 -#, c-format -msgid "Subnet expected for configuration variable %s in %s line %d" -msgstr "Subnet verwacht voor configuratievariabele %s in %s regel %d" - -#: src/conf.c:237 -#, c-format -msgid "" -"Network address and prefix length do not match for configuration variable %s " -"in %s line %d" -msgstr "" -"Netwerk adres en prefix lengte komen niet overeen bij configuratievariabele %" -"s in %s regel %d" - -#: src/conf.c:337 -#, c-format -msgid "Cannot open config file %s: %s" -msgstr "Kan configuratie bestand %s niet openen: %s" - -#: src/conf.c:391 -#, c-format -msgid "No value for variable `%s' on line %d while reading config file %s" -msgstr "" -"Geen waarde voor variabele `%s' op regel %d tijdens het lezen van " -"configuratie bestand %s" - -#: src/conf.c:422 -#, c-format -msgid "Failed to read `%s': %s" -msgstr "Lezen van `%s' mislukte: %s" - -#: src/conf.c:444 -#, c-format -msgid "Please enter a file to save %s to [%s]: " -msgstr "Geef een bestand om de %s naar de schrijven [%s]: " - -#: src/conf.c:451 -#, c-format -msgid "Error while reading stdin: %s\n" -msgstr "Fout tijdens lezen van standaardinvoer: %s\n" - -#: src/conf.c:483 -#, c-format -msgid "Error opening file `%s': %s\n" -msgstr "Fout bij het openen van het bestand `%s': %s\n" - -#: src/connection.c:49 -msgid "everyone" -msgstr "iedereen" - -#: src/connection.c:50 -msgid "BROADCAST" -msgstr "BROADCAST" - -#: src/connection.c:142 -msgid "Connections:" -msgstr "Verbindingen:" - -#: src/connection.c:146 -#, c-format -msgid " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d" -msgstr " %s op %s opties %lx socket %d status %04x outbuf %d/%d/%d" - -#: src/connection.c:151 -msgid "End of connections." -msgstr "Einde van verbindingen." - -#: src/meta.c:44 -#, c-format -msgid "Sending %d bytes of metadata to %s (%s)" -msgstr "Verzenden van %d bytes metadata naar %s (%s)" - -#: src/meta.c:66 -#, c-format -msgid "Error while encrypting metadata to %s (%s): %s" -msgstr "Fout tijdens versleutelen van metadata naar %s (%s): %s" - -#: src/meta.c:70 -msgid "Encrypted data too long! Heap corrupted!" -msgstr "Versleutelde data te lang! Heap gecorrumpeerd!" - -#: src/meta.c:86 -#, c-format -msgid "Flushing %d bytes to %s (%s)" -msgstr "Wegschrijven %d bytes naar %s (%s)" - -#: src/meta.c:93 src/meta.c:156 -#, c-format -msgid "Connection closed by %s (%s)" -msgstr "Verbinding beëindigd door %s (%s)" - -#: src/meta.c:99 -#, c-format -msgid "Flushing %d bytes to %s (%s) would block" -msgstr "Wegschrijven %d bytes naar %s (%s) zou blokkeren" - -#: src/meta.c:104 -#, c-format -msgid "Flushing meta data to %s (%s) failed: %s" -msgstr "Wegschrijven metadata naar %s (%s) faalde: %s" - -#: src/meta.c:161 -#, c-format -msgid "Metadata socket read error for %s (%s): %s" -msgstr "Fout op metadata socket voor %s (%s) tijdens lezen: %s" - -#: src/meta.c:176 -#, c-format -msgid "Error while decrypting metadata from %s (%s): %s" -msgstr "Fout tijdens ontsleutelen van metadata van %s (%s): %s" - -#: src/meta.c:229 -#, c-format -msgid "Metadata read buffer overflow for %s (%s)" -msgstr "Metadata leesbuffer overloop voor %s (%s)" - -#: src/net.c:60 -msgid "Purging unreachable nodes" -msgstr "Verwijderen onbereikbare nodes" - -#: src/net.c:69 -#, c-format -msgid "Purging node %s (%s)" -msgstr "Verwijdering node %s (%s)" - -#: src/net.c:173 -#, c-format -msgid "Closing connection with %s (%s)" -msgstr "Beëindigen verbinding met %s (%s)" - -#: src/net.c:244 -#, c-format -msgid "%s (%s) didn't respond to PING in %ld seconds" -msgstr "%s (%s) antwoordde niet binnen %ld seconden op PING" - -#: src/net.c:253 -#, c-format -msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..." -msgstr "" -"Oude connection_t voor %s (%s) status %04x nog steeds aanwezig, wordt " -"verwijderd..." - -#: src/net.c:258 -#, c-format -msgid "Timeout from %s (%s) during authentication" -msgstr "Timeout van %s (%s) tijdens authenticatie" - -#: src/net.c:273 -#, c-format -msgid "%s (%s) could not flush for %ld seconds (%d bytes remaining)" -msgstr "%s (%s) kon niet binnen %ld seconden wegschrijven (%d bytes over)" - -#: src/net.c:318 -#, c-format -msgid "Error while connecting to %s (%s): %s" -msgstr "Fout tijdens schrijven naar %s (%s): %s" - -#: src/net.c:383 -#, c-format -msgid "Error while waiting for input: %s" -msgstr "Fout tijdens wachten op invoer: %s" - -#: src/net.c:414 -msgid "Regenerating symmetric key" -msgstr "Hergenereren symmetrische sleutel" - -#: src/net.c:431 -msgid "Flushing event queue" -msgstr "Legen taakrij" - -#: src/net.c:450 -msgid "Unable to reread configuration file, exitting." -msgstr "Kan configuratiebestand niet herlezen, beëindigen." - -#: src/net_packet.c:75 -#, c-format -msgid "No response to MTU probes from %s (%s)" -msgstr "Geen antwoord van %s (%s) op MTU probes" - -#: src/net_packet.c:82 -#, c-format -msgid "Fixing MTU of %s (%s) to %d after %d probes" -msgstr "MTU van %s (%s) vastgezet op %d na %d probes" - -#: src/net_packet.c:94 -#, c-format -msgid "Sending MTU probe length %d to %s (%s)" -msgstr "Verzending MTU probe lengte %d naar %s (%s)" - -#: src/net_packet.c:107 -#, c-format -msgid "Got MTU probe length %d from %s (%s)" -msgstr "Kreeg MTU probe met verkeerde lengte %d van %s (%s)" - -#: src/net_packet.c:164 -#, c-format -msgid "Received packet of %d bytes from %s (%s)" -msgstr "Ontvangst pakket van %d bytes van %s (%s)" - -#: src/net_packet.c:185 src/route.c:92 -#, c-format -msgid "Got too short packet from %s (%s)" -msgstr "Kreeg te kort pakket van %s (%s)" - -#: src/net_packet.c:198 -#, c-format -msgid "Got unauthenticated packet from %s (%s)" -msgstr "Kreeg niet-geauthenticeerd pakket van %s (%s)" - -#: src/net_packet.c:213 -#, c-format -msgid "Error decrypting packet from %s (%s): %s" -msgstr "Fout tijdens ontsleutelen pakket van %s (%s): %s" - -#: src/net_packet.c:229 -#, c-format -msgid "Lost %d packets from %s (%s)" -msgstr "%d pakketten van %s (%s) verloren" - -#: src/net_packet.c:235 -#, c-format -msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d" -msgstr "" -"Kreeg laat of gedupliceerd pakket van %s (%s), seqno %d, laatste ontvangen %d" - -#: src/net_packet.c:259 -#, c-format -msgid "Error while uncompressing packet from %s (%s)" -msgstr "Fout tijdens decomprimeren pakket van %s (%s)" - -#: src/net_packet.c:308 -#, c-format -msgid "No valid key known yet for %s (%s), queueing packet" -msgstr "" -"Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in wachtrij gezet" - -#: src/net_packet.c:337 -#, c-format -msgid "Error while compressing packet to %s (%s)" -msgstr "Fout tijdens comprimeren pakket naar %s (%s)" - -#: src/net_packet.c:359 -#, c-format -msgid "Error while encrypting packet to %s (%s): %s" -msgstr "Fout tijdens versleutelen pakket naar %s (%s): %s" - -#: src/net_packet.c:391 -#, c-format -msgid "Setting outgoing packet priority to %d" -msgstr "Instellen prioriteit uitgaand pakket op %d" - -#: src/net_packet.c:393 src/net_setup.c:478 src/net_socket.c:140 -#: src/net_socket.c:169 src/tincd.c:435 src/tincd.c:472 src/process.c:201 -#: src/process.c:234 src/process.c:433 src/bsd/device.c:93 -#: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171 -#: src/mingw/device.c:73 src/mingw/device.c:80 src/mingw/device.c:86 -#: src/mingw/device.c:258 src/mingw/device.c:265 src/mingw/device.c:270 -#: src/mingw/device.c:277 src/mingw/device.c:286 src/mingw/device.c:293 -#: src/uml_socket/device.c:89 src/uml_socket/device.c:103 -#: src/uml_socket/device.c:130 src/uml_socket/device.c:194 -#, c-format -msgid "System call `%s' failed: %s" -msgstr "Systeemaanroep `%s' mislukte: %s" - -#: src/net_packet.c:404 -#, c-format -msgid "Error sending packet to %s (%s): %s" -msgstr "Fout tijdens verzenden pakket naar %s (%s): %s" - -#: src/net_packet.c:427 -#, c-format -msgid "Sending packet of %d bytes to %s (%s)" -msgstr "Verzending pakket van %d bytes naar %s (%s)" - -#: src/net_packet.c:431 -#, c-format -msgid "Node %s (%s) is not reachable" -msgstr "Node %s (%s) is niet bereikbaar" - -#: src/net_packet.c:439 -#, c-format -msgid "Sending packet to %s via %s (%s)" -msgstr "Verzending pakket naar %s via %s (%s)" - -#: src/net_packet.c:458 -#, c-format -msgid "Broadcasting packet of %d bytes from %s (%s)" -msgstr "Verspreiding pakket van %d bytes van %s (%s)" - -#: src/net_packet.c:478 -#, c-format -msgid "Flushing queue for %s (%s)" -msgstr "Legen van wachtrij voor %s (%s)" - -#: src/net_packet.c:500 -#, c-format -msgid "Receiving packet failed: %s" -msgstr "Ontvangst pakket mislukt: %s" - -#: src/net_packet.c:510 -#, c-format -msgid "Received UDP packet from unknown source %s" -msgstr "Ontvangst UDP pakket van onbekende oorsprong %s" - -#: src/net_setup.c:77 src/net_setup.c:94 -#, c-format -msgid "Error reading RSA public key file `%s': %s" -msgstr "Fout tijdens lezen RSA publieke sleutel bestand `%s': %s" - -#: src/net_setup.c:109 -#, c-format -msgid "Reading RSA public key file `%s' failed: %s" -msgstr "Lezen RSA publieke sleutel bestand `%s' mislukt: %s" - -#: src/net_setup.c:145 -#, c-format -msgid "No public key for %s specified!" -msgstr "Geen publieke sleutel bekend voor %s gespecificeerd!" - -#: src/net_setup.c:160 -msgid "PrivateKey used but no PublicKey found!" -msgstr "PrivateKey gebruikt maar geen PublicKey gevonden!" - -#: src/net_setup.c:179 -#, c-format -msgid "Error reading RSA private key file `%s': %s" -msgstr "Fout tijdens lezen RSA privé sleutel bestand `%s': %s" - -#: src/net_setup.c:187 -#, c-format -msgid "Could not stat RSA private key file `%s': %s'" -msgstr "Kon gegevens RSA privé sleutel bestand `%s' niet opvragen: %s" - -#: src/net_setup.c:194 -#, c-format -msgid "Warning: insecure file permissions for RSA private key file `%s'!" -msgstr "" -"Waarschuwing: onveilige permissies voor RSA privé sleutel bestand `%s'!" - -#: src/net_setup.c:201 -#, c-format -msgid "Reading RSA private key file `%s' failed: %s" -msgstr "Fout tijdens lezen RSA privé sleutel bestand `%s': %s" - -#: src/net_setup.c:231 src/net_setup.c:232 -msgid "MYSELF" -msgstr "MIJZELF" - -#: src/net_setup.c:238 -msgid "Name for tinc daemon required!" -msgstr "Naam voor tinc daemon verplicht!" - -#: src/net_setup.c:243 -msgid "Invalid name for myself!" -msgstr "Ongeldige naam voor mijzelf!" - -#: src/net_setup.c:252 -msgid "Cannot open host configuration file for myself!" -msgstr "Kan host configuratie bestand voor mijzelf niet openen!" - -#: src/net_setup.c:305 -msgid "Invalid routing mode!" -msgstr "Ongeldige routing modus!" - -#: src/net_setup.c:316 -msgid "PriorityInheritance not supported on this platform" -msgstr "PriorityInheritance wordt niet ondersteund op dit platform" - -#: src/net_setup.c:324 -msgid "Bogus maximum timeout!" -msgstr "Onzinnige maximum timeout!" - -#: src/net_setup.c:338 -msgid "Invalid address family!" -msgstr "Ongeldige adresfamilie!" - -#: src/net_setup.c:356 -msgid "Unrecognized cipher type!" -msgstr "Onbekend cipher type!" - -#: src/net_setup.c:381 src/protocol_auth.c:194 -#, c-format -msgid "Error during initialisation of cipher for %s (%s): %s" -msgstr "Fout tijdens initialisatie van cipher voor %s (%s): %s" - -#: src/net_setup.c:398 -msgid "Unrecognized digest type!" -msgstr "Onbekend digest type!" - -#: src/net_setup.c:411 -msgid "MAC length exceeds size of digest!" -msgstr "MAC lengte is groter dan dat van digest!" - -#: src/net_setup.c:414 -msgid "Bogus MAC length!" -msgstr "Onzinnige MAC lengte!" - -#: src/net_setup.c:428 -msgid "Bogus compression level!" -msgstr "Onzinnig compressieniveau!" - -#: src/net_setup.c:500 -#, c-format -msgid "Listening on %s" -msgstr "Luisterend op %s" - -#: src/net_setup.c:511 -msgid "Ready" -msgstr "Gereed" - -#: src/net_setup.c:513 -msgid "Unable to create any listening socket!" -msgstr "Kon geen enkele luistersocket aanmaken!" - -#: src/net_socket.c:63 -#, c-format -msgid "fcntl for %s: %s" -msgstr "fcntl voor %s: %s" - -#: src/net_socket.c:69 -#, c-format -msgid "ioctlsocket for %s: WSA error %d" -msgstr "ioctlsocket voor %s: WSA fout %d" - -#: src/net_socket.c:96 -#, c-format -msgid "Creating metasocket failed: %s" -msgstr "Aanmaak van metasocket mislukt: %s" - -#: src/net_socket.c:120 src/net_socket.c:227 -#, c-format -msgid "Can't bind to interface %s: %s" -msgstr "Kan niet aan interface %s binden: %s" - -#: src/net_socket.c:125 -msgid "BindToInterface not supported on this platform" -msgstr "BindToInterface wordt niet ondersteund op dit platform" - -#: src/net_socket.c:132 -#, c-format -msgid "Can't bind to %s/tcp: %s" -msgstr "Kan niet aan %s/tcp binden: %s" - -#: src/net_socket.c:159 -#, c-format -msgid "Creating UDP socket failed: %s" -msgstr "Aanmaak UDP socket mislukte: %s" - -#: src/net_socket.c:179 -#, c-format -msgid "Call to `%s' failed: WSA error %d" -msgstr "Systeemaanroep `%s' mislukte: WSA fout %d" - -#: src/net_socket.c:238 -#, c-format -msgid "Can't bind to %s/udp: %s" -msgstr "Kan niet aan %s/udp binden: %s" - -#: src/net_socket.c:265 -#, c-format -msgid "Trying to re-establish outgoing connection in %d seconds" -msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden" - -#: src/net_socket.c:273 -#, c-format -msgid "Connected to %s (%s)" -msgstr "Verbonden met %s (%s)" - -#: src/net_socket.c:292 -#, c-format -msgid "Could not set up a meta connection to %s" -msgstr "Kon geen metaverbinding aangaan met %s" - -#: src/net_socket.c:327 -#, c-format -msgid "Trying to connect to %s (%s)" -msgstr "Poging tot verbinden met %s (%s)" - -#: src/net_socket.c:333 -#, c-format -msgid "Creating socket for %s failed: %s" -msgstr "Aanmaken socket voor %s mislukt: %s" - -#: src/net_socket.c:365 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: src/net_socket.c:386 -#, c-format -msgid "Already connected to %s" -msgstr "Reeds verbonden met %s" - -#: src/net_socket.c:405 -#, c-format -msgid "No address specified for %s" -msgstr "Geen adres gespecificeerd voor %s" - -#: src/net_socket.c:436 -#, c-format -msgid "Accepting a new connection failed: %s" -msgstr "Aanname van nieuwe verbinding is mislukt: %s" - -#: src/net_socket.c:455 -#, c-format -msgid "Connection from %s" -msgstr "Verbinding van %s" - -#: src/net_socket.c:480 -#, c-format -msgid "Invalid name for outgoing connection in %s line %d" -msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d" - -#: src/netutl.c:50 -#, c-format -msgid "Error looking up %s port %s: %s" -msgstr "Fout bij het opzoeken van %s poort %s: %s" - -#: src/netutl.c:105 -#, c-format -msgid "Error while translating addresses: %s" -msgstr "Fout tijdens vertalen adressen: %s" - -#: src/netutl.c:131 src/netutl.c:142 -#, c-format -msgid "%s port %s" -msgstr "%s poort %s" - -#: src/netutl.c:138 -#, c-format -msgid "Error while looking up hostname: %s" -msgstr "Fout bij het opzoeken van hostnaam: %s" - -#: src/netutl.c:187 -#, c-format -msgid "sockaddrcmp() was called with unknown address family %d, exitting!" -msgstr "" -"sockaddrcmp() werd aangeroepen met onbekende adresfamilie %d, beëindigen!" - -#: src/protocol.c:87 -#, c-format -msgid "Output buffer overflow while sending request to %s (%s)" -msgstr "Uitvoer buffer overvol tijdens zenden verzoek naar %s (%s)" - -#: src/protocol.c:95 -#, c-format -msgid "Sending %s to %s (%s): %s" -msgstr "Verzending %s naar %s (%s): %s" - -#: src/protocol.c:98 -#, c-format -msgid "Sending %s to %s (%s)" -msgstr "Verzending %s naar %s (%s)" - -#: src/protocol.c:120 -#, c-format -msgid "Forwarding %s from %s (%s): %s" -msgstr "Doorsturen %s van %s (%s): %s" - -#: src/protocol.c:124 -#, c-format -msgid "Forwarding %s from %s (%s)" -msgstr "Doorsturen %s van %s (%s)" - -#: src/protocol.c:142 -#, c-format -msgid "Unknown request from %s (%s): %s" -msgstr "Onbekend verzoek van %s (%s): %s" - -#: src/protocol.c:145 -#, c-format -msgid "Unknown request from %s (%s)" -msgstr "Onbekend verzoek van %s (%s)" - -#: src/protocol.c:152 -#, c-format -msgid "Got %s from %s (%s): %s" -msgstr "Kreeg %s van %s (%s): %s" - -#: src/protocol.c:156 -#, c-format -msgid "Got %s from %s (%s)" -msgstr "Kreeg %s van %s (%s)" - -#: src/protocol.c:162 -#, c-format -msgid "Unauthorized request from %s (%s)" -msgstr "Niet toegestaan verzoek van %s (%s)" - -#: src/protocol.c:170 -#, c-format -msgid "Error while processing %s from %s (%s)" -msgstr "Fout tijdens afhandelen %s van %s (%s)" - -#: src/protocol.c:175 -#, c-format -msgid "Bogus data received from %s (%s)" -msgstr "Onzinnige data ontvangen van %s (%s)" - -#: src/protocol.c:221 -msgid "Already seen request" -msgstr "Verzoek reeds gezien" - -#: src/protocol.c:251 -#, c-format -msgid "Aging past requests: deleted %d, left %d" -msgstr "Veroudering vorige verzoeken: %d gewist, %d overgebleven" - -#: src/protocol_auth.c:58 src/protocol_auth.c:214 src/protocol_auth.c:345 -#: src/protocol_auth.c:412 src/protocol_auth.c:538 src/protocol_edge.c:73 -#: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105 -#: src/protocol_key.c:179 src/protocol_misc.c:56 src/protocol_misc.c:85 -#: src/protocol_misc.c:176 src/protocol_subnet.c:58 src/protocol_subnet.c:170 -#, c-format -msgid "Got bad %s from %s (%s)" -msgstr "Kreeg verkeerde %s van %s (%s)" - -#: src/protocol_auth.c:66 src/protocol_edge.c:81 src/protocol_edge.c:87 -#: src/protocol_edge.c:196 src/protocol_edge.c:202 src/protocol_subnet.c:66 -#: src/protocol_subnet.c:74 src/protocol_subnet.c:178 -#: src/protocol_subnet.c:199 -#, c-format -msgid "Got bad %s from %s (%s): %s" -msgstr "Kreeg verkeerde %s van %s (%s): %s" - -#: src/protocol_auth.c:75 -#, c-format -msgid "Peer %s is %s instead of %s" -msgstr "Ander %s is %s in plaats van %s" - -#: src/protocol_auth.c:88 -#, c-format -msgid "Peer %s (%s) uses incompatible version %d" -msgstr "Ander %s (%s) gebruikt incompatibele versie %d" - -#: src/protocol_auth.c:104 -#, c-format -msgid "Peer %s had unknown identity (%s)" -msgstr "Ander %s heeft onbekende identiteit (%s)" - -#: src/protocol_auth.c:158 -#, c-format -msgid "Generated random meta key (unencrypted): %s" -msgstr "Willekeurige meta sleutel aangemaakt (niet versleuteld): %s" - -#: src/protocol_auth.c:170 -#, c-format -msgid "Error during encryption of meta key for %s (%s)" -msgstr "Fout tijdens versleutelen van meta key voor %s (%s)" - -#: src/protocol_auth.c:224 src/protocol_auth.c:355 src/protocol_auth.c:420 -#: src/protocol_auth.c:442 -#, c-format -msgid "Possible intruder %s (%s): %s" -msgstr "Mogelijke indringer %s (%s): %s" - -#: src/protocol_auth.c:243 -#, c-format -msgid "Error during decryption of meta key for %s (%s)" -msgstr "Fout tijdens ontsleutelen van meta key voor %s (%s)" - -#: src/protocol_auth.c:251 -#, c-format -msgid "Received random meta key (unencrypted): %s" -msgstr "Ontving willekeurige meta key (niet versleuteld): %s" - -#: src/protocol_auth.c:262 -#, c-format -msgid "%s (%s) uses unknown cipher!" -msgstr "%s (%s) gebruikt onbekende cipher!" - -#: src/protocol_auth.c:270 -#, c-format -msgid "Error during initialisation of cipher from %s (%s): %s" -msgstr "Fout tijdens initalisatie van cipher van %s (%s): %s" - -#: src/protocol_auth.c:286 src/protocol_key.c:255 -#, c-format -msgid "Node %s (%s) uses unknown digest!" -msgstr "Node %s (%s) gebruikt onbekende digest!" - -#: src/protocol_auth.c:291 -#, c-format -msgid "%s (%s) uses bogus MAC length!" -msgstr "%s (%s) gebruikt onzinnige MAC lengte!" - -#: src/protocol_auth.c:388 -#, c-format -msgid "Error during calculation of response for %s (%s): %s" -msgstr "Fout tijdens berekenen van antwoord voor %s (%s): %s" - -#: src/protocol_auth.c:421 -msgid "wrong challenge reply length" -msgstr "verkeerde lengte antwoord op uitdaging" - -#: src/protocol_auth.c:434 -#, c-format -msgid "Error during calculation of response from %s (%s): %s" -msgstr "Fout tijdens narekenen van antwoord van %s (%s): %s" - -#: src/protocol_auth.c:443 -msgid "wrong challenge reply" -msgstr "verkeerd antwoord op uitdaging" - -#: src/protocol_auth.c:448 -#, c-format -msgid "Expected challenge reply: %s" -msgstr "Verwachtte antwoord op uitdaging: %s" - -#: src/protocol_auth.c:554 -#, c-format -msgid "Established a second connection with %s (%s), closing old connection" -msgstr "Tweede verbinding met %s (%s) gemaakt, oude verbinding wordt gesloten" - -#: src/protocol_auth.c:577 -#, c-format -msgid "Connection with %s (%s) activated" -msgstr "Verbinding met %s (%s) geactiveerd" - -#: src/protocol_edge.c:82 src/protocol_edge.c:88 src/protocol_edge.c:197 -#: src/protocol_edge.c:203 src/protocol_subnet.c:67 src/protocol_subnet.c:179 -msgid "invalid name" -msgstr "ongeldige naam" - -#: src/protocol_edge.c:127 -#, c-format -msgid "Got %s from %s (%s) for ourself which does not match existing entry" -msgstr "" -"Kreeg %s van %s (%s) voor onszelf welke niet overeenkomt met reeds bekende" - -#: src/protocol_edge.c:132 -#, c-format -msgid "Got %s from %s (%s) which does not match existing entry" -msgstr "Kreeg %s van %s (%s) welke niet overeenkomt met reeds bekende" - -#: src/protocol_edge.c:140 -#, c-format -msgid "Got %s from %s (%s) for ourself which does not exist" -msgstr "Kreeg %s van %s (%s) voor onszelf welke niet bestaat" - -#: src/protocol_edge.c:215 src/protocol_edge.c:223 src/protocol_edge.c:236 -#, c-format -msgid "Got %s from %s (%s) which does not appear in the edge tree" -msgstr "Kreeg %s van %s (%s) welke niet voorkomt in de edge tree" - -#: src/protocol_edge.c:242 src/protocol_subnet.c:103 src/protocol_subnet.c:222 -#, c-format -msgid "Got %s from %s (%s) for ourself" -msgstr "Kreeg %s van %s (%s) voor onszelf" - -#: src/protocol_key.c:73 -#, c-format -msgid "Got %s from %s (%s) origin %s which does not exist" -msgstr "Kreeg %s van %s (%s) herkomst %s welke niet bestaat" - -#: src/protocol_key.c:113 src/protocol_key.c:187 -#, c-format -msgid "" -"Got %s from %s (%s) origin %s which does not exist in our connection list" -msgstr "" -"Kreeg %s van %s (%s) herkomst %s welke niet voorkomt in de verbindingslijst" - -#: src/protocol_key.c:121 src/protocol_key.c:195 -#, c-format -msgid "" -"Got %s from %s (%s) destination %s which does not exist in our connection " -"list" -msgstr "" -"Kreeg %s van %s (%s) doel %s welke niet voorkomt in de verbindingslijst" - -#: src/protocol_key.c:138 src/protocol_key.c:207 -#, c-format -msgid "Got %s from %s (%s) destination %s which is not reachable" -msgstr "Kreeg %s van %s (%s) doel %s welke niet bereikbaar is" - -#: src/protocol_key.c:235 -#, c-format -msgid "Node %s (%s) uses unknown cipher!" -msgstr "Node %s (%s) gebruikt onbekende cipher!" - -#: src/protocol_key.c:241 -#, c-format -msgid "Node %s (%s) uses wrong keylength!" -msgstr "Node %s (%s) gebruikt verkeerde lengte sleutel!" - -#: src/protocol_key.c:261 -#, c-format -msgid "Node %s (%s) uses bogus MAC length!" -msgstr "Node %s (%s) gebruikt onzinnige MAC lengte!" - -#: src/protocol_key.c:270 -#, c-format -msgid "Node %s (%s) uses bogus compression level!" -msgstr "Node %s (%s) gebruikt onzinnig compressieniveau!" - -#: src/protocol_key.c:278 -#, c-format -msgid "Error during initialisation of key from %s (%s): %s" -msgstr "Fout tijdens initialisatie van sleutel van %s (%s): %s" - -#: src/protocol_misc.c:61 -#, c-format -msgid "Status message from %s (%s): %d: %s" -msgstr "Statusmelding van %s (%s): %d: %s" - -#: src/protocol_misc.c:90 -#, c-format -msgid "Error message from %s (%s): %d: %s" -msgstr "Foutmelding van %s (%s): %d: %s" - -#: src/protocol_subnet.c:75 src/protocol_subnet.c:200 -msgid "invalid subnet string" -msgstr "ongeldige subnet string" - -#: src/protocol_subnet.c:188 -#, c-format -msgid "Got %s from %s (%s) for %s which is not in our node tree" -msgstr "Kreeg %s van %s (%s) voor %s welke niet voorkomt in de node boom" - -#: src/protocol_subnet.c:214 -#, c-format -msgid "Got %s from %s (%s) for %s which does not appear in his subnet tree" -msgstr "Kreeg %s van %s (%s) voor %s welke niet voorkomt in zijn subnet boom" - -#: src/subnet.c:105 -#, c-format -msgid "subnet_compare() was called with unknown subnet type %d, exitting!" -msgstr "" -"subnet_compare() werd aangeroepen met onbekend subnet type %d, beëindigen!" - -#: src/subnet.c:263 -#, c-format -msgid "net2str() was called with netstr=%p, subnet=%p!\n" -msgstr "net2str() werd aangeroepen met netstr=%p, subnet=%p!\n" - -#: src/subnet.c:300 -#, c-format -msgid "net2str() was called with unknown subnet type %d, exiting!" -msgstr "net2str() werd aangeroepen met onbekend subnet type %d, beëindigen!" - -#: src/subnet.c:465 -msgid "Subnet list:" -msgstr "Subnet lijst:" - -#: src/subnet.c:471 -#, c-format -msgid " %s owner %s" -msgstr " %s eigenaar %s" - -#: src/subnet.c:474 -msgid "End of subnet list." -msgstr "Einde van subnet lijst." - -#: src/tincd.c:109 -#, c-format -msgid "Try `%s --help' for more information.\n" -msgstr "Probeer `%s --help' voor meer informatie.\n" - -#: src/tincd.c:112 -#, c-format -msgid "" -"Usage: %s [option]...\n" -"\n" -msgstr "" -"Gebruik: %s [optie]...\n" -"\n" - -#: src/tincd.c:113 -#, c-format -msgid "" -" -c, --config=DIR Read configuration options from DIR.\n" -" -D, --no-detach Don't fork and detach.\n" -" -d, --debug[=LEVEL] Increase debug level or set it to LEVEL.\n" -" -k, --kill[=SIGNAL] Attempt to kill a running tincd and exit.\n" -" -n, --net=NETNAME Connect to net NETNAME.\n" -" -K, --generate-keys[=BITS] Generate public/private RSA keypair.\n" -" -L, --mlock Lock tinc into main memory.\n" -" --logfile[=FILENAME] Write log entries to a logfile.\n" -" --pidfile=FILENAME Write PID to FILENAME.\n" -" --help Display this help and exit.\n" -" --version Output version information and exit.\n" -"\n" -msgstr "" -" -c, --config=MAP Lees configuratie uit MAP.\n" -" -D, --no-detach Start geen nieuw proces.\n" -" -d, --debug[=NIVEAU] Verhoog debugniveau of stel het in op NIVEAU.\n" -" -k, --kill[=SIGNAAL] Poging tot zenden signaal naar lopende tincd en " -"beëindig.\n" -" -n, --net=NETNAAM Verbind met net NETNAAM.\n" -" -K, --generate-keys[=BITS] Genereer publiek/privé RSA sleutelpaar.\n" -" -L, --mlock Houd tinc vast in het centrale geheugen.\n" -" --logfile[=BESTAND] Schrijf log naar BESTAND.\n" -" --pidfile=BESTAND Schrijf PID naar BESTAND.\n" -" --help Geef deze hulp en beëindig.\n" -" --version Geef versie informatie en beëindig.\n" -"\n" - -#: src/tincd.c:124 -#, c-format -msgid "Report bugs to tinc@tinc-vpn.org.\n" -msgstr "" -"Meld fouten in het programma aan tinc@tinc-vpn.org;\n" -"Meld fouten in de vertaling aan vertaling@nl.linux.org.\n" - -#: src/tincd.c:180 -#, c-format -msgid "" -"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, " -"USR1, USR2, WINCH, INT or ALRM.\n" -msgstr "" -"Ongeldig argument `%s'; SIGNAAL moet een getal zijn of één van HUP, TERM, " -"KILL, USR1, USR2, WINCH, INT of ALRM.\n" - -#: src/tincd.c:202 -#, c-format -msgid "" -"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n" -msgstr "" -"Ongeldig argument `%s'; BITS moet een nummer zijn gelijk aan of groter dan " -"512.\n" - -#: src/tincd.c:295 -#, c-format -msgid "Generating %d bits keys:\n" -msgstr "Bezig met genereren van een %d bits sleutel:\n" - -#: src/tincd.c:299 -#, c-format -msgid "Error during key generation!\n" -msgstr "Fout tijdens genereren sleutel!\n" - -#: src/tincd.c:302 -#, c-format -msgid "Done.\n" -msgstr "Klaar.\n" - -#: src/tincd.c:305 -msgid "private RSA key" -msgstr "geheime RSA sleutel" - -#: src/tincd.c:316 src/tincd.c:335 -#, c-format -msgid "" -"Appending key to existing contents.\n" -"Make sure only one key is stored in the file.\n" -msgstr "" -"Sleutel wordt toegevoegd aan bestaande inhoud.\n" -"Let er op dat er slechts één sleutel in het bestand is.\n" - -#: src/tincd.c:329 -msgid "public RSA key" -msgstr "openbare RSA sleutel" - -#: src/tincd.c:388 -msgid "Both netname and configuration directory given, using the latter..." -msgstr "" -"Zowel netnaam als configuratiemap zijn gegeven, laatste wordt gebruikt..." - -#: src/tincd.c:409 -#, c-format -msgid "%s version %s (built %s %s, protocol %d)\n" -msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n" - -#: src/tincd.c:411 -#, c-format -msgid "" -"Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen and others.\n" -"See the AUTHORS file for a complete list.\n" -"\n" -"tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" -"and you are welcome to redistribute it under certain conditions;\n" -"see the file COPYING for details.\n" -msgstr "" -"Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen en anderen.\n" -"Zie het bestand AUTHORS voor een volledige lijst.\n" -"\n" -"tinc wordt gedistribueerd ZONDER ENIGE GARANTIE. Dit is vrije " -"programmatuur,\n" -"en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n" -"zie het bestand COPYING voor details.\n" - -#: src/tincd.c:439 -msgid "mlockall() not supported on this platform!" -msgstr "mlockall() wordt niet ondersteund op dit platform!" - -#: src/tincd.c:466 -msgid "Error initializing LZO compressor!" -msgstr "Fout tijdens initialiseren LZO compressor!" - -#: src/tincd.c:507 -msgid "Terminating" -msgstr "Beëindigen" - -#: src/process.c:54 -#, c-format -msgid "Memory exhausted (couldn't allocate %d bytes), exitting." -msgstr "Geheugen uitgeput (kon geen %d bytes reserveren), beëindigen." - -#: src/process.c:79 src/process.c:129 -#, c-format -msgid "Could not open service manager: %s" -msgstr "Kon service manager niet openen: %s" - -#: src/process.c:110 -#, c-format -msgid "Could not create %s service: %s" -msgstr "Kon %s service niet aanmaken: %s" - -#: src/process.c:116 -#, c-format -msgid "%s service installed" -msgstr "%s service geïnstalleerd" - -#: src/process.c:119 -#, c-format -msgid "Could not start %s service: %s" -msgstr "Kon %s service niet starten: %s" - -#: src/process.c:121 -#, c-format -msgid "%s service started" -msgstr "%s service gestart" - -#: src/process.c:136 -#, c-format -msgid "Could not open %s service: %s" -msgstr "Kon %s service niet openen: %s" - -#: src/process.c:141 -#, c-format -msgid "Could not stop %s service: %s" -msgstr "Kon %s service niet stoppen: %s" - -#: src/process.c:143 -#, c-format -msgid "%s service stopped" -msgstr "%s service gestopt" - -#: src/process.c:146 -#, c-format -msgid "Could not remove %s service: %s" -msgstr "Kon %s service niet verwijderen: %s" - -#: src/process.c:150 -#, c-format -msgid "%s service removed" -msgstr "%s service verwijderd" - -#: src/process.c:161 src/process.c:164 -#, c-format -msgid "Got %s request" -msgstr "Kreeg %s verzoek" - -#: src/process.c:167 -#, c-format -msgid "Got unexpected request %d" -msgstr "Kreeg onverwacht verzoek %d" - -#: src/process.c:255 -#, c-format -msgid "A tincd is already running for net `%s' with pid %ld.\n" -msgstr "Een tincd draait al voor net `%s' met pid %ld.\n" - -#: src/process.c:258 -#, c-format -msgid "A tincd is already running with pid %ld.\n" -msgstr "Een tincd draait al met pid %ld.\n" - -#: src/process.c:264 -#, c-format -msgid "Could write pid file %s: %s\n" -msgstr "Kon pid bestand %s niet openen: %s\n" - -#: src/process.c:286 -#, c-format -msgid "No other tincd is running for net `%s'.\n" -msgstr "Geen andere tincd draait voor net `%s'.\n" - -#: src/process.c:289 -#, c-format -msgid "No other tincd is running.\n" -msgstr "Geen andere tincd draait.\n" - -#: src/process.c:298 -#, c-format -msgid "The tincd for net `%s' is no longer running. " -msgstr "De tincd voor net `%s' draait niet meer. " - -#: src/process.c:301 -#, c-format -msgid "The tincd is no longer running. " -msgstr "De tincd draait niet meer. " - -#: src/process.c:303 -#, c-format -msgid "Removing stale lock file.\n" -msgstr "Verwijdering oud vergrendelingsbestand.\n" - -#: src/process.c:336 -#, c-format -msgid "Couldn't detach from terminal: %s" -msgstr "Kon niet ontkoppelen van terminal: %s" - -#: src/process.c:344 -#, c-format -msgid "Could not write pid file %s: %s\n" -msgstr "Kon pid bestand %s niet schrijven: %s\n" - -#: src/process.c:355 -#, c-format -msgid "tincd %s (%s %s) starting, debug level %d" -msgstr "tincd %s (%s %s) start, debug niveau %d" - -#: src/process.c:390 -#, c-format -msgid "Executing script %s" -msgstr "Uitvoeren script %s" - -#: src/process.c:420 -#, c-format -msgid "Script %s exited with non-zero status %d" -msgstr "Script %s beëindigde met status %d" - -#: src/process.c:425 -#, c-format -msgid "Script %s was killed by signal %d (%s)" -msgstr "Script %s was gestopt door signaal %d (%s)" - -#: src/process.c:429 -#, c-format -msgid "Script %s terminated abnormally" -msgstr "Script %s abnormaal beëindigd" - -#: src/process.c:449 src/process.c:458 src/process.c:499 src/process.c:505 -#: src/process.c:523 -#, c-format -msgid "Got %s signal" -msgstr "Kreeg %s signaal" - -#: src/process.c:467 -#, c-format -msgid "Got another fatal signal %d (%s): not restarting." -msgstr "Kreeg nog een fataal signaal %d (%s): geen herstart." - -#: src/process.c:476 -#, c-format -msgid "Got fatal signal %d (%s)" -msgstr "Kreeg fataal signaal %d (%s)" - -#: src/process.c:480 -msgid "Trying to re-execute in 5 seconds..." -msgstr "Poging tot herstarten over 5 seconden..." - -#: src/process.c:492 -msgid "Not restarting." -msgstr "Geen herstart." - -#: src/process.c:508 -#, c-format -msgid "Reverting to old debug level (%d)" -msgstr "Herstellen van oud debug niveau (%d)" - -#: src/process.c:514 -#, c-format -msgid "" -"Temporarily setting debug level to 5. Kill me with SIGINT again to go back " -"to level %d." -msgstr "" -"Tijdelijk instellen debug niveau op 5. Zend nog een SIGINT signaal om niveau " -"%d te herstellen." - -#: src/process.c:547 -#, c-format -msgid "Got unexpected signal %d (%s)" -msgstr "Kreeg onverwacht signaal %d (%s)" - -#: src/process.c:553 -#, c-format -msgid "Ignored signal %d (%s)" -msgstr "Signaal %d (%s) genegeerd" - -#: src/process.c:607 -#, c-format -msgid "Installing signal handler for signal %d (%s) failed: %s\n" -msgstr "Installeren van signaal afhandelaar voor signaal %d (%s) faalde: %s\n" - -#: src/route.c:111 -#, c-format -msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx" -msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd" - -#: src/route.c:149 -#, c-format -msgid "Subnet %s expired" -msgstr "Subnet %s is verlopen" - -#: src/route.c:190 src/route.c:345 src/route.c:496 -#, c-format -msgid "Packet looping back to %s (%s)!" -msgstr "Pakket komt terug naar %s (%s)!" - -#: src/route.c:289 -#, c-format -msgid "Length of packet (%d) doesn't match length in IPv4 header (%zd)" -msgstr "" -"Lengte van pakket (%d) komt niet overeen met lengte in IPv4 header (%zd)" - -#: src/route.c:293 -#, c-format -msgid "Fragmenting packet of %d bytes to %s (%s)" -msgstr "Fragmentatie pakket van %d bytes naar %s (%s)" - -#: src/route.c:333 -#, c-format -msgid "" -"Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%" -"d" -msgstr "" -"Kan pakket van %s (%s) niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d" - -#: src/route.c:358 src/route.c:506 -#, c-format -msgid "Packet for %s (%s) length %d larger than MTU %d" -msgstr "Packet voor %s (%s) lengte %d groter dan MTU %d" - -#: src/route.c:480 -#, c-format -msgid "" -"Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%" -"hx:%hx:%hx:%hx:%hx:%hx" -msgstr "" -"Kan pakket van %s (%s) niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%" -"hx:%hx:%hx:%hx:%hx" - -#: src/route.c:538 -#, c-format -msgid "Got neighbor solicitation request from %s (%s) while in router mode!" -msgstr "" -"Kreeg neighbor solicitation request van %s (%s) terwijl we in router mode " -"werken!" - -#: src/route.c:557 -msgid "" -"Cannot route packet: received unknown type neighbor solicitation request" -msgstr "" -"Kan pakket niet routeren: ontvangst van onbekend type neighbor solicitation " -"verzoek" - -#: src/route.c:576 -msgid "Cannot route packet: checksum error for neighbor solicitation request" -msgstr "" -"Kan pakket niet routeren: checksum fout voor neighbor solicitation verzoek" - -#: src/route.c:585 -#, c-format -msgid "" -"Cannot route packet: neighbor solicitation request for unknown address %hx:%" -"hx:%hx:%hx:%hx:%hx:%hx:%hx" -msgstr "" -"Kan pakket niet routeren: neighbor solicitation verzoek voor onbekend adres %" -"hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx" - -#: src/route.c:675 -#, c-format -msgid "Got ARP request from %s (%s) while in router mode!" -msgstr "Kreeg ARP request van %s (%s) terwijl we in router mode werken!" - -#: src/route.c:692 -msgid "Cannot route packet: received unknown type ARP request" -msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek" - -#: src/route.c:701 -#, c-format -msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d" -msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d" - -#: src/route.c:757 -#, c-format -msgid "Cannot route packet from %s (%s): unknown type %hx" -msgstr "Kan pakket van %s (%s) niet routeren: onbekend type %hx" - -#: src/node.c:183 -msgid "Nodes:" -msgstr "Nodes:" - -#: src/node.c:187 -#, c-format -msgid "" -" %s at %s cipher %d digest %d maclength %d compression %d options %lx status " -"%04x nexthop %s via %s pmtu %d (min %d max %d)" -msgstr "" -" %s op %s cipher %d digest %d maclengte %d compressie %d opties %lx status %" -"04x nexthop %s via %s pmtu %d (min %d max %d)" - -#: src/node.c:194 -msgid "End of nodes." -msgstr "Einde van nodes." - -#: src/edge.c:148 -msgid "Edges:" -msgstr "Edges:" - -#: src/edge.c:155 -#, c-format -msgid " %s to %s at %s options %lx weight %d" -msgstr " %s naar %s op %s opties %lx gewicht %d" - -#: src/edge.c:161 -msgid "End of edges." -msgstr "Einde van edges." - -#: src/graph.c:270 -#, c-format -msgid "Node %s (%s) became reachable" -msgstr "Node %s (%s) werd bereikbaar" - -#: src/graph.c:274 -#, c-format -msgid "Node %s (%s) became unreachable" -msgstr "Node %s (%s) is niet meer bereikbaar" - -#: src/linux/device.c:72 src/solaris/device.c:57 src/bsd/device.c:63 -#: src/raw_socket/device.c:59 src/uml_socket/device.c:122 -#, c-format -msgid "Could not open %s: %s" -msgstr "Kon `%s' niet openen: %s" - -#: src/linux/device.c:83 -msgid "Linux tun/tap device (tun mode)" -msgstr "Linux tun/tap apparaat (tun modus)" - -#: src/linux/device.c:87 -msgid "Linux tun/tap device (tap mode)" -msgstr "Linux tun/tap apparaat (tap modus)" - -#: src/linux/device.c:97 -#, c-format -msgid "Old ioctl() request was needed for %s" -msgstr "Oud ioctl() verzoek was nodig voor %s" - -#: src/linux/device.c:105 -msgid "Linux ethertap device" -msgstr "Linux ethertap apparaat" - -#: src/linux/device.c:110 src/solaris/device.c:106 src/bsd/device.c:133 -#: src/raw_socket/device.c:83 src/uml_socket/device.c:149 -#, c-format -msgid "%s is a %s" -msgstr "%s is een %s" - -#: src/linux/device.c:133 src/linux/device.c:144 src/linux/device.c:155 -#: src/solaris/device.c:125 src/bsd/device.c:152 src/bsd/device.c:181 -#: src/bsd/device.c:210 src/cygwin/device.c:239 src/mingw/device.c:112 -#: src/mingw/device.c:325 src/raw_socket/device.c:102 -#: src/uml_socket/device.c:239 -#, c-format -msgid "Error while reading from %s %s: %s" -msgstr "Fout tijdens lezen van %s %s: %s" - -#: src/linux/device.c:166 src/solaris/device.c:150 src/bsd/device.c:224 -#: src/cygwin/device.c:248 src/mingw/device.c:335 src/raw_socket/device.c:111 -#: src/uml_socket/device.c:249 -#, c-format -msgid "Read packet of %d bytes from %s" -msgstr "Pakket van %d bytes gelezen van %s" - -#: src/linux/device.c:176 src/solaris/device.c:160 src/bsd/device.c:234 -#: src/cygwin/device.c:260 src/mingw/device.c:348 src/raw_socket/device.c:121 -#: src/uml_socket/device.c:267 -#, c-format -msgid "Writing packet of %d bytes to %s" -msgstr "Pakket van %d bytes geschreven naar %s" - -#: src/linux/device.c:183 src/linux/device.c:190 src/linux/device.c:199 -#: src/solaris/device.c:164 src/bsd/device.c:268 src/raw_socket/device.c:125 -#: src/uml_socket/device.c:272 -#, c-format -msgid "Can't write to %s %s: %s" -msgstr "Kan niet schrijven naar %s %s: %s" - -#: src/linux/device.c:215 src/solaris/device.c:178 src/bsd/device.c:296 -#: src/cygwin/device.c:277 src/mingw/device.c:365 src/raw_socket/device.c:139 -#: src/uml_socket/device.c:288 -#, c-format -msgid "Statistics for %s %s:" -msgstr "Statistieken voor %s %s:" - -#: src/linux/device.c:216 src/solaris/device.c:179 src/bsd/device.c:297 -#: src/cygwin/device.c:278 src/mingw/device.c:366 src/raw_socket/device.c:140 -#: src/uml_socket/device.c:289 -#, c-format -msgid " total bytes in: %10d" -msgstr " totaal aantal bytes in: %10d" - -#: src/linux/device.c:217 src/solaris/device.c:180 src/bsd/device.c:298 -#: src/cygwin/device.c:279 src/mingw/device.c:367 src/raw_socket/device.c:141 -#: src/uml_socket/device.c:290 -#, c-format -msgid " total bytes out: %10d" -msgstr " totaal aantal bytes uit: %10d" - -#: src/solaris/device.c:69 -#, c-format -msgid "Could not open /dev/ip: %s" -msgstr "Kon /dev/ip niet openen: %s" - -#: src/solaris/device.c:75 -#, c-format -msgid "Can't assign new interface: %s" -msgstr "Kan geen nieuwe interface toekennen: %s" - -#: src/solaris/device.c:80 -#, c-format -msgid "Could not open %s twice: %s" -msgstr "Kon `%s' niet twee keer openen: %s" - -#: src/solaris/device.c:86 -#, c-format -msgid "Can't push IP module: %s" -msgstr "Kan IP module niet invoegen: %s" - -#: src/solaris/device.c:92 -#, c-format -msgid "Can't set PPA %d: %s" -msgstr "Kon PPA %d niet instellen: %s" - -#: src/solaris/device.c:97 -#, c-format -msgid "Can't link TUN device to IP: %s" -msgstr "Kan TUN apparaat niet koppelen aan IP: %s" - -#: src/solaris/device.c:104 -msgid "Solaris tun device" -msgstr "Solaris tun apparaat" - -#: src/solaris/device.c:141 src/bsd/device.c:168 -#, c-format -msgid "Unknown IP version %d while reading packet from %s %s" -msgstr "Onbekende IP versie %d tijdens ontvangst pakket van %s %s" - -#: src/bsd/device.c:77 -#, c-format -msgid "Unknown device type %s!" -msgstr "Onbekend apparaattype %s!" - -#: src/bsd/device.c:105 src/bsd/device.c:124 -msgid "Generic BSD tun device" -msgstr "Generiek BSD tun apparaat" - -#: src/bsd/device.c:129 -msgid "Generic BSD tap device" -msgstr "Generiek BSD tap apparaat" - -#: src/bsd/device.c:199 -#, c-format -msgid "Unknown address family %x while reading packet from %s %s" -msgstr "Onbekende adresfamilie %x tijdens ontvangst pakket van %s %s" - -#: src/bsd/device.c:240 src/bsd/device.c:277 src/cygwin/device.c:264 -#: src/mingw/device.c:352 -#, c-format -msgid "Error while writing to %s %s: %s" -msgstr "Fout tijdens schrijven naar %s %s: %s" - -#: src/bsd/device.c:262 -#, c-format -msgid "Unknown address family %x while writing packet to %s %s" -msgstr "Onbekende adresfamiliy %x tijdens versturen pakket naar %s %s" - -#: src/cygwin/device.c:71 src/mingw/device.c:159 -#, c-format -msgid "Unable to read registry: %s" -msgstr "Kon registry niet lezen: %s" - -#: src/cygwin/device.c:123 src/mingw/device.c:210 -msgid "No Windows tap device found!" -msgstr "Geen Windows tap apparaat gevonden!" - -#: src/cygwin/device.c:149 -#, c-format -msgid "Could not open Windows tap device %s (%s) for writing: %s" -msgstr "Kon Windows tap apparaat %s (%s) niet openen om te schrijven: %s" - -#: src/cygwin/device.c:158 src/mingw/device.c:235 -#, c-format -msgid "Could not get MAC address from Windows tap device %s (%s): %s" -msgstr "Kon MAC adres niet achterhalen van Windows tap apparaat %s (%s): %s" - -#: src/cygwin/device.c:187 -#, c-format -msgid "Could not open Windows tap device %s (%s) for reading: %s" -msgstr "Kon Windows tap apparaat %s (%s) niet openen om te lezen: %s" - -#: src/cygwin/device.c:193 -msgid "Tap reader forked and running." -msgstr "Taplezer is geforked en draait." - -#: src/cygwin/device.c:210 -msgid "Tap reader failed!" -msgstr "Taplezer faalde!" - -#: src/cygwin/device.c:214 src/mingw/device.c:304 -msgid "Windows tap device" -msgstr "Windows tap apparaat" - -#: src/cygwin/device.c:216 src/mingw/device.c:306 -#, c-format -msgid "%s (%s) is a %s" -msgstr "%s (%s) is een %s" - -#: src/mingw/device.c:93 -msgid "Tap reader running" -msgstr "Taplezer draait" - -#: src/mingw/device.c:228 -#, c-format -msgid "%s (%s) is not a usable Windows tap device: %s" -msgstr "%s (%s) is geen bruikbaar Windows tap apparaat: %s" - -#: src/raw_socket/device.c:56 -msgid "raw socket" -msgstr "raw socket" - -#: src/raw_socket/device.c:68 -#, c-format -msgid "Can't find interface %s: %s" -msgstr "Kan interface %s niet vinden: %s" - -#: src/raw_socket/device.c:79 src/uml_socket/device.c:137 -#, c-format -msgid "Could not bind %s to %s: %s" -msgstr "Kon %s niet aan %s binden: %s" - -#: src/uml_socket/device.c:78 -msgid "UML network socket" -msgstr "UML network socket" - -#: src/uml_socket/device.c:81 -#, c-format -msgid "Could not open write %s: %s" -msgstr "Kon `%s' niet openen: %s" - -#: src/uml_socket/device.c:95 -#, c-format -msgid "Could not open data %s: %s" -msgstr "Kon data-%s niet openen: %s" - -#: src/uml_socket/device.c:116 -#, c-format -msgid "Could not bind data %s: %s" -msgstr "Kon data-%s niet binden: %s" - -#: src/uml_socket/device.c:142 -#, c-format -msgid "Could not listen on %s %s: %s" -msgstr "Kon niet luisteren op %s %s: %s" - -#: src/uml_socket/device.c:189 -#, c-format -msgid "Could not accept connection to %s %s: %s" -msgstr "Kon verbinding met %s %s niet accepteren: %s" - -#: src/uml_socket/device.c:209 -#, c-format -msgid "Error while reading request from %s %s: %s" -msgstr "Fout tijdens lezen verzoek van %s %s: %s" - -#: src/uml_socket/device.c:216 -#, c-format -msgid "Unknown magic %x, version %d, request type %d from %s %s" -msgstr "Onbekende magische waarde %x, versie %d, verzoektype %d van %s %s" - -#: src/uml_socket/device.c:223 -#, c-format -msgid "Could not bind write %s: %s" -msgstr "Kon niet aan schrijf-%s binden: %s" - -#: src/uml_socket/device.c:231 -msgid "Connection with UML established" -msgstr "Verbinding met UML geactiveerd" - -#: src/uml_socket/device.c:262 -#, c-format -msgid "Dropping packet of %d bytes to %s: not connected to UML yet" -msgstr "Pakket van %d bytes naar %s laten vallen: nog niet verbonden met UML" diff --git a/po/quot.sed b/po/quot.sed deleted file mode 100644 index 0122c46..0000000 --- a/po/quot.sed +++ /dev/null @@ -1,6 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin deleted file mode 100644 index 2436c49..0000000 --- a/po/remove-potcdate.sin +++ /dev/null @@ -1,19 +0,0 @@ -# Sed script that remove the POT-Creation-Date line in the header entry -# from a POT file. -# -# The distinction between the first and the following occurrences of the -# pattern is achieved by looking at the hold space. -/^"POT-Creation-Date: .*"$/{ -x -# Test if the hold space is empty. -s/P/P/ -ta -# Yes it was empty. First occurrence. Remove the line. -g -d -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/po/stamp-po b/po/stamp-po deleted file mode 100644 index 9788f70..0000000 --- a/po/stamp-po +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/po/tinc.pot b/po/tinc.pot deleted file mode 100644 index d08f7dc..0000000 --- a/po/tinc.pot +++ /dev/null @@ -1,1563 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Ivo Timmermans and Guus Sliepen -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n" -"POT-Creation-Date: 2008-12-24 11:43+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: lib/utils.c:93 -msgid "(unable to format errormessage)" -msgstr "" - -#: src/conf.c:160 -#, c-format -msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d" -msgstr "" - -#: src/conf.c:176 -#, c-format -msgid "Integer expected for configuration variable %s in %s line %d" -msgstr "" - -#: src/conf.c:210 -#, c-format -msgid "" -"Hostname or IP address expected for configuration variable %s in %s line %d" -msgstr "" - -#: src/conf.c:226 -#, c-format -msgid "Subnet expected for configuration variable %s in %s line %d" -msgstr "" - -#: src/conf.c:237 -#, c-format -msgid "" -"Network address and prefix length do not match for configuration variable %s " -"in %s line %d" -msgstr "" - -#: src/conf.c:337 -#, c-format -msgid "Cannot open config file %s: %s" -msgstr "" - -#: src/conf.c:391 -#, c-format -msgid "No value for variable `%s' on line %d while reading config file %s" -msgstr "" - -#: src/conf.c:422 -#, c-format -msgid "Failed to read `%s': %s" -msgstr "" - -#: src/conf.c:444 -#, c-format -msgid "Please enter a file to save %s to [%s]: " -msgstr "" - -#: src/conf.c:451 -#, c-format -msgid "Error while reading stdin: %s\n" -msgstr "" - -#: src/conf.c:483 -#, c-format -msgid "Error opening file `%s': %s\n" -msgstr "" - -#: src/connection.c:49 -msgid "everyone" -msgstr "" - -#: src/connection.c:50 -msgid "BROADCAST" -msgstr "" - -#: src/connection.c:142 -msgid "Connections:" -msgstr "" - -#: src/connection.c:146 -#, c-format -msgid " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d" -msgstr "" - -#: src/connection.c:151 -msgid "End of connections." -msgstr "" - -#: src/meta.c:44 -#, c-format -msgid "Sending %d bytes of metadata to %s (%s)" -msgstr "" - -#: src/meta.c:66 -#, c-format -msgid "Error while encrypting metadata to %s (%s): %s" -msgstr "" - -#: src/meta.c:70 -msgid "Encrypted data too long! Heap corrupted!" -msgstr "" - -#: src/meta.c:86 -#, c-format -msgid "Flushing %d bytes to %s (%s)" -msgstr "" - -#: src/meta.c:93 src/meta.c:156 -#, c-format -msgid "Connection closed by %s (%s)" -msgstr "" - -#: src/meta.c:99 -#, c-format -msgid "Flushing %d bytes to %s (%s) would block" -msgstr "" - -#: src/meta.c:104 -#, c-format -msgid "Flushing meta data to %s (%s) failed: %s" -msgstr "" - -#: src/meta.c:161 -#, c-format -msgid "Metadata socket read error for %s (%s): %s" -msgstr "" - -#: src/meta.c:176 -#, c-format -msgid "Error while decrypting metadata from %s (%s): %s" -msgstr "" - -#: src/meta.c:229 -#, c-format -msgid "Metadata read buffer overflow for %s (%s)" -msgstr "" - -#: src/net.c:60 -msgid "Purging unreachable nodes" -msgstr "" - -#: src/net.c:69 -#, c-format -msgid "Purging node %s (%s)" -msgstr "" - -#: src/net.c:173 -#, c-format -msgid "Closing connection with %s (%s)" -msgstr "" - -#: src/net.c:244 -#, c-format -msgid "%s (%s) didn't respond to PING in %ld seconds" -msgstr "" - -#: src/net.c:253 -#, c-format -msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..." -msgstr "" - -#: src/net.c:258 -#, c-format -msgid "Timeout from %s (%s) during authentication" -msgstr "" - -#: src/net.c:273 -#, c-format -msgid "%s (%s) could not flush for %ld seconds (%d bytes remaining)" -msgstr "" - -#: src/net.c:318 -#, c-format -msgid "Error while connecting to %s (%s): %s" -msgstr "" - -#: src/net.c:383 -#, c-format -msgid "Error while waiting for input: %s" -msgstr "" - -#: src/net.c:414 -msgid "Regenerating symmetric key" -msgstr "" - -#: src/net.c:431 -msgid "Flushing event queue" -msgstr "" - -#: src/net.c:450 -msgid "Unable to reread configuration file, exitting." -msgstr "" - -#: src/net_packet.c:75 -#, c-format -msgid "No response to MTU probes from %s (%s)" -msgstr "" - -#: src/net_packet.c:82 -#, c-format -msgid "Fixing MTU of %s (%s) to %d after %d probes" -msgstr "" - -#: src/net_packet.c:94 -#, c-format -msgid "Sending MTU probe length %d to %s (%s)" -msgstr "" - -#: src/net_packet.c:107 -#, c-format -msgid "Got MTU probe length %d from %s (%s)" -msgstr "" - -#: src/net_packet.c:164 -#, c-format -msgid "Received packet of %d bytes from %s (%s)" -msgstr "" - -#: src/net_packet.c:185 src/route.c:92 -#, c-format -msgid "Got too short packet from %s (%s)" -msgstr "" - -#: src/net_packet.c:198 -#, c-format -msgid "Got unauthenticated packet from %s (%s)" -msgstr "" - -#: src/net_packet.c:213 -#, c-format -msgid "Error decrypting packet from %s (%s): %s" -msgstr "" - -#: src/net_packet.c:229 -#, c-format -msgid "Lost %d packets from %s (%s)" -msgstr "" - -#: src/net_packet.c:235 -#, c-format -msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d" -msgstr "" - -#: src/net_packet.c:259 -#, c-format -msgid "Error while uncompressing packet from %s (%s)" -msgstr "" - -#: src/net_packet.c:308 -#, c-format -msgid "No valid key known yet for %s (%s), queueing packet" -msgstr "" - -#: src/net_packet.c:337 -#, c-format -msgid "Error while compressing packet to %s (%s)" -msgstr "" - -#: src/net_packet.c:359 -#, c-format -msgid "Error while encrypting packet to %s (%s): %s" -msgstr "" - -#: src/net_packet.c:391 -#, c-format -msgid "Setting outgoing packet priority to %d" -msgstr "" - -#: src/net_packet.c:393 src/net_setup.c:478 src/net_socket.c:140 -#: src/net_socket.c:169 src/tincd.c:435 src/tincd.c:472 src/process.c:201 -#: src/process.c:234 src/process.c:433 src/bsd/device.c:93 -#: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171 -#: src/mingw/device.c:73 src/mingw/device.c:80 src/mingw/device.c:86 -#: src/mingw/device.c:258 src/mingw/device.c:265 src/mingw/device.c:270 -#: src/mingw/device.c:277 src/mingw/device.c:286 src/mingw/device.c:293 -#: src/uml_socket/device.c:89 src/uml_socket/device.c:103 -#: src/uml_socket/device.c:130 src/uml_socket/device.c:194 -#, c-format -msgid "System call `%s' failed: %s" -msgstr "" - -#: src/net_packet.c:404 -#, c-format -msgid "Error sending packet to %s (%s): %s" -msgstr "" - -#: src/net_packet.c:427 -#, c-format -msgid "Sending packet of %d bytes to %s (%s)" -msgstr "" - -#: src/net_packet.c:431 -#, c-format -msgid "Node %s (%s) is not reachable" -msgstr "" - -#: src/net_packet.c:439 -#, c-format -msgid "Sending packet to %s via %s (%s)" -msgstr "" - -#: src/net_packet.c:458 -#, c-format -msgid "Broadcasting packet of %d bytes from %s (%s)" -msgstr "" - -#: src/net_packet.c:478 -#, c-format -msgid "Flushing queue for %s (%s)" -msgstr "" - -#: src/net_packet.c:500 -#, c-format -msgid "Receiving packet failed: %s" -msgstr "" - -#: src/net_packet.c:510 -#, c-format -msgid "Received UDP packet from unknown source %s" -msgstr "" - -#: src/net_setup.c:77 src/net_setup.c:94 -#, c-format -msgid "Error reading RSA public key file `%s': %s" -msgstr "" - -#: src/net_setup.c:109 -#, c-format -msgid "Reading RSA public key file `%s' failed: %s" -msgstr "" - -#: src/net_setup.c:145 -#, c-format -msgid "No public key for %s specified!" -msgstr "" - -#: src/net_setup.c:160 -msgid "PrivateKey used but no PublicKey found!" -msgstr "" - -#: src/net_setup.c:179 -#, c-format -msgid "Error reading RSA private key file `%s': %s" -msgstr "" - -#: src/net_setup.c:187 -#, c-format -msgid "Could not stat RSA private key file `%s': %s'" -msgstr "" - -#: src/net_setup.c:194 -#, c-format -msgid "Warning: insecure file permissions for RSA private key file `%s'!" -msgstr "" - -#: src/net_setup.c:201 -#, c-format -msgid "Reading RSA private key file `%s' failed: %s" -msgstr "" - -#: src/net_setup.c:231 src/net_setup.c:232 -msgid "MYSELF" -msgstr "" - -#: src/net_setup.c:238 -msgid "Name for tinc daemon required!" -msgstr "" - -#: src/net_setup.c:243 -msgid "Invalid name for myself!" -msgstr "" - -#: src/net_setup.c:252 -msgid "Cannot open host configuration file for myself!" -msgstr "" - -#: src/net_setup.c:305 -msgid "Invalid routing mode!" -msgstr "" - -#: src/net_setup.c:316 -msgid "PriorityInheritance not supported on this platform" -msgstr "" - -#: src/net_setup.c:324 -msgid "Bogus maximum timeout!" -msgstr "" - -#: src/net_setup.c:338 -msgid "Invalid address family!" -msgstr "" - -#: src/net_setup.c:356 -msgid "Unrecognized cipher type!" -msgstr "" - -#: src/net_setup.c:381 src/protocol_auth.c:194 -#, c-format -msgid "Error during initialisation of cipher for %s (%s): %s" -msgstr "" - -#: src/net_setup.c:398 -msgid "Unrecognized digest type!" -msgstr "" - -#: src/net_setup.c:411 -msgid "MAC length exceeds size of digest!" -msgstr "" - -#: src/net_setup.c:414 -msgid "Bogus MAC length!" -msgstr "" - -#: src/net_setup.c:428 -msgid "Bogus compression level!" -msgstr "" - -#: src/net_setup.c:500 -#, c-format -msgid "Listening on %s" -msgstr "" - -#: src/net_setup.c:511 -msgid "Ready" -msgstr "" - -#: src/net_setup.c:513 -msgid "Unable to create any listening socket!" -msgstr "" - -#: src/net_socket.c:63 -#, c-format -msgid "fcntl for %s: %s" -msgstr "" - -#: src/net_socket.c:69 -#, c-format -msgid "ioctlsocket for %s: WSA error %d" -msgstr "" - -#: src/net_socket.c:96 -#, c-format -msgid "Creating metasocket failed: %s" -msgstr "" - -#: src/net_socket.c:120 src/net_socket.c:227 -#, c-format -msgid "Can't bind to interface %s: %s" -msgstr "" - -#: src/net_socket.c:125 -msgid "BindToInterface not supported on this platform" -msgstr "" - -#: src/net_socket.c:132 -#, c-format -msgid "Can't bind to %s/tcp: %s" -msgstr "" - -#: src/net_socket.c:159 -#, c-format -msgid "Creating UDP socket failed: %s" -msgstr "" - -#: src/net_socket.c:179 -#, c-format -msgid "Call to `%s' failed: WSA error %d" -msgstr "" - -#: src/net_socket.c:238 -#, c-format -msgid "Can't bind to %s/udp: %s" -msgstr "" - -#: src/net_socket.c:265 -#, c-format -msgid "Trying to re-establish outgoing connection in %d seconds" -msgstr "" - -#: src/net_socket.c:273 -#, c-format -msgid "Connected to %s (%s)" -msgstr "" - -#: src/net_socket.c:292 -#, c-format -msgid "Could not set up a meta connection to %s" -msgstr "" - -#: src/net_socket.c:327 -#, c-format -msgid "Trying to connect to %s (%s)" -msgstr "" - -#: src/net_socket.c:333 -#, c-format -msgid "Creating socket for %s failed: %s" -msgstr "" - -#: src/net_socket.c:365 -#, c-format -msgid "%s: %s" -msgstr "" - -#: src/net_socket.c:386 -#, c-format -msgid "Already connected to %s" -msgstr "" - -#: src/net_socket.c:405 -#, c-format -msgid "No address specified for %s" -msgstr "" - -#: src/net_socket.c:436 -#, c-format -msgid "Accepting a new connection failed: %s" -msgstr "" - -#: src/net_socket.c:455 -#, c-format -msgid "Connection from %s" -msgstr "" - -#: src/net_socket.c:480 -#, c-format -msgid "Invalid name for outgoing connection in %s line %d" -msgstr "" - -#: src/netutl.c:50 -#, c-format -msgid "Error looking up %s port %s: %s" -msgstr "" - -#: src/netutl.c:105 -#, c-format -msgid "Error while translating addresses: %s" -msgstr "" - -#: src/netutl.c:131 src/netutl.c:142 -#, c-format -msgid "%s port %s" -msgstr "" - -#: src/netutl.c:138 -#, c-format -msgid "Error while looking up hostname: %s" -msgstr "" - -#: src/netutl.c:187 -#, c-format -msgid "sockaddrcmp() was called with unknown address family %d, exitting!" -msgstr "" - -#: src/protocol.c:87 -#, c-format -msgid "Output buffer overflow while sending request to %s (%s)" -msgstr "" - -#: src/protocol.c:95 -#, c-format -msgid "Sending %s to %s (%s): %s" -msgstr "" - -#: src/protocol.c:98 -#, c-format -msgid "Sending %s to %s (%s)" -msgstr "" - -#: src/protocol.c:120 -#, c-format -msgid "Forwarding %s from %s (%s): %s" -msgstr "" - -#: src/protocol.c:124 -#, c-format -msgid "Forwarding %s from %s (%s)" -msgstr "" - -#: src/protocol.c:142 -#, c-format -msgid "Unknown request from %s (%s): %s" -msgstr "" - -#: src/protocol.c:145 -#, c-format -msgid "Unknown request from %s (%s)" -msgstr "" - -#: src/protocol.c:152 -#, c-format -msgid "Got %s from %s (%s): %s" -msgstr "" - -#: src/protocol.c:156 -#, c-format -msgid "Got %s from %s (%s)" -msgstr "" - -#: src/protocol.c:162 -#, c-format -msgid "Unauthorized request from %s (%s)" -msgstr "" - -#: src/protocol.c:170 -#, c-format -msgid "Error while processing %s from %s (%s)" -msgstr "" - -#: src/protocol.c:175 -#, c-format -msgid "Bogus data received from %s (%s)" -msgstr "" - -#: src/protocol.c:221 -msgid "Already seen request" -msgstr "" - -#: src/protocol.c:251 -#, c-format -msgid "Aging past requests: deleted %d, left %d" -msgstr "" - -#: src/protocol_auth.c:58 src/protocol_auth.c:214 src/protocol_auth.c:345 -#: src/protocol_auth.c:412 src/protocol_auth.c:538 src/protocol_edge.c:73 -#: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105 -#: src/protocol_key.c:179 src/protocol_misc.c:56 src/protocol_misc.c:85 -#: src/protocol_misc.c:176 src/protocol_subnet.c:58 src/protocol_subnet.c:170 -#, c-format -msgid "Got bad %s from %s (%s)" -msgstr "" - -#: src/protocol_auth.c:66 src/protocol_edge.c:81 src/protocol_edge.c:87 -#: src/protocol_edge.c:196 src/protocol_edge.c:202 src/protocol_subnet.c:66 -#: src/protocol_subnet.c:74 src/protocol_subnet.c:178 -#: src/protocol_subnet.c:199 -#, c-format -msgid "Got bad %s from %s (%s): %s" -msgstr "" - -#: src/protocol_auth.c:75 -#, c-format -msgid "Peer %s is %s instead of %s" -msgstr "" - -#: src/protocol_auth.c:88 -#, c-format -msgid "Peer %s (%s) uses incompatible version %d" -msgstr "" - -#: src/protocol_auth.c:104 -#, c-format -msgid "Peer %s had unknown identity (%s)" -msgstr "" - -#: src/protocol_auth.c:158 -#, c-format -msgid "Generated random meta key (unencrypted): %s" -msgstr "" - -#: src/protocol_auth.c:170 -#, c-format -msgid "Error during encryption of meta key for %s (%s)" -msgstr "" - -#: src/protocol_auth.c:224 src/protocol_auth.c:355 src/protocol_auth.c:420 -#: src/protocol_auth.c:442 -#, c-format -msgid "Possible intruder %s (%s): %s" -msgstr "" - -#: src/protocol_auth.c:243 -#, c-format -msgid "Error during decryption of meta key for %s (%s)" -msgstr "" - -#: src/protocol_auth.c:251 -#, c-format -msgid "Received random meta key (unencrypted): %s" -msgstr "" - -#: src/protocol_auth.c:262 -#, c-format -msgid "%s (%s) uses unknown cipher!" -msgstr "" - -#: src/protocol_auth.c:270 -#, c-format -msgid "Error during initialisation of cipher from %s (%s): %s" -msgstr "" - -#: src/protocol_auth.c:286 src/protocol_key.c:255 -#, c-format -msgid "Node %s (%s) uses unknown digest!" -msgstr "" - -#: src/protocol_auth.c:291 -#, c-format -msgid "%s (%s) uses bogus MAC length!" -msgstr "" - -#: src/protocol_auth.c:388 -#, c-format -msgid "Error during calculation of response for %s (%s): %s" -msgstr "" - -#: src/protocol_auth.c:421 -msgid "wrong challenge reply length" -msgstr "" - -#: src/protocol_auth.c:434 -#, c-format -msgid "Error during calculation of response from %s (%s): %s" -msgstr "" - -#: src/protocol_auth.c:443 -msgid "wrong challenge reply" -msgstr "" - -#: src/protocol_auth.c:448 -#, c-format -msgid "Expected challenge reply: %s" -msgstr "" - -#: src/protocol_auth.c:554 -#, c-format -msgid "Established a second connection with %s (%s), closing old connection" -msgstr "" - -#: src/protocol_auth.c:577 -#, c-format -msgid "Connection with %s (%s) activated" -msgstr "" - -#: src/protocol_edge.c:82 src/protocol_edge.c:88 src/protocol_edge.c:197 -#: src/protocol_edge.c:203 src/protocol_subnet.c:67 src/protocol_subnet.c:179 -msgid "invalid name" -msgstr "" - -#: src/protocol_edge.c:127 -#, c-format -msgid "Got %s from %s (%s) for ourself which does not match existing entry" -msgstr "" - -#: src/protocol_edge.c:132 -#, c-format -msgid "Got %s from %s (%s) which does not match existing entry" -msgstr "" - -#: src/protocol_edge.c:140 -#, c-format -msgid "Got %s from %s (%s) for ourself which does not exist" -msgstr "" - -#: src/protocol_edge.c:215 src/protocol_edge.c:223 src/protocol_edge.c:236 -#, c-format -msgid "Got %s from %s (%s) which does not appear in the edge tree" -msgstr "" - -#: src/protocol_edge.c:242 src/protocol_subnet.c:103 src/protocol_subnet.c:222 -#, c-format -msgid "Got %s from %s (%s) for ourself" -msgstr "" - -#: src/protocol_key.c:73 -#, c-format -msgid "Got %s from %s (%s) origin %s which does not exist" -msgstr "" - -#: src/protocol_key.c:113 src/protocol_key.c:187 -#, c-format -msgid "" -"Got %s from %s (%s) origin %s which does not exist in our connection list" -msgstr "" - -#: src/protocol_key.c:121 src/protocol_key.c:195 -#, c-format -msgid "" -"Got %s from %s (%s) destination %s which does not exist in our connection " -"list" -msgstr "" - -#: src/protocol_key.c:138 src/protocol_key.c:207 -#, c-format -msgid "Got %s from %s (%s) destination %s which is not reachable" -msgstr "" - -#: src/protocol_key.c:235 -#, c-format -msgid "Node %s (%s) uses unknown cipher!" -msgstr "" - -#: src/protocol_key.c:241 -#, c-format -msgid "Node %s (%s) uses wrong keylength!" -msgstr "" - -#: src/protocol_key.c:261 -#, c-format -msgid "Node %s (%s) uses bogus MAC length!" -msgstr "" - -#: src/protocol_key.c:270 -#, c-format -msgid "Node %s (%s) uses bogus compression level!" -msgstr "" - -#: src/protocol_key.c:278 -#, c-format -msgid "Error during initialisation of key from %s (%s): %s" -msgstr "" - -#: src/protocol_misc.c:61 -#, c-format -msgid "Status message from %s (%s): %d: %s" -msgstr "" - -#: src/protocol_misc.c:90 -#, c-format -msgid "Error message from %s (%s): %d: %s" -msgstr "" - -#: src/protocol_subnet.c:75 src/protocol_subnet.c:200 -msgid "invalid subnet string" -msgstr "" - -#: src/protocol_subnet.c:188 -#, c-format -msgid "Got %s from %s (%s) for %s which is not in our node tree" -msgstr "" - -#: src/protocol_subnet.c:214 -#, c-format -msgid "Got %s from %s (%s) for %s which does not appear in his subnet tree" -msgstr "" - -#: src/subnet.c:105 -#, c-format -msgid "subnet_compare() was called with unknown subnet type %d, exitting!" -msgstr "" - -#: src/subnet.c:263 -#, c-format -msgid "net2str() was called with netstr=%p, subnet=%p!\n" -msgstr "" - -#: src/subnet.c:300 -#, c-format -msgid "net2str() was called with unknown subnet type %d, exiting!" -msgstr "" - -#: src/subnet.c:465 -msgid "Subnet list:" -msgstr "" - -#: src/subnet.c:471 -#, c-format -msgid " %s owner %s" -msgstr "" - -#: src/subnet.c:474 -msgid "End of subnet list." -msgstr "" - -#: src/tincd.c:109 -#, c-format -msgid "Try `%s --help' for more information.\n" -msgstr "" - -#: src/tincd.c:112 -#, c-format -msgid "" -"Usage: %s [option]...\n" -"\n" -msgstr "" - -#: src/tincd.c:113 -#, c-format -msgid "" -" -c, --config=DIR Read configuration options from DIR.\n" -" -D, --no-detach Don't fork and detach.\n" -" -d, --debug[=LEVEL] Increase debug level or set it to LEVEL.\n" -" -k, --kill[=SIGNAL] Attempt to kill a running tincd and exit.\n" -" -n, --net=NETNAME Connect to net NETNAME.\n" -" -K, --generate-keys[=BITS] Generate public/private RSA keypair.\n" -" -L, --mlock Lock tinc into main memory.\n" -" --logfile[=FILENAME] Write log entries to a logfile.\n" -" --pidfile=FILENAME Write PID to FILENAME.\n" -" --help Display this help and exit.\n" -" --version Output version information and exit.\n" -"\n" -msgstr "" - -#: src/tincd.c:124 -#, c-format -msgid "Report bugs to tinc@tinc-vpn.org.\n" -msgstr "" - -#: src/tincd.c:180 -#, c-format -msgid "" -"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, " -"USR1, USR2, WINCH, INT or ALRM.\n" -msgstr "" - -#: src/tincd.c:202 -#, c-format -msgid "" -"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n" -msgstr "" - -#: src/tincd.c:295 -#, c-format -msgid "Generating %d bits keys:\n" -msgstr "" - -#: src/tincd.c:299 -#, c-format -msgid "Error during key generation!\n" -msgstr "" - -#: src/tincd.c:302 -#, c-format -msgid "Done.\n" -msgstr "" - -#: src/tincd.c:305 -msgid "private RSA key" -msgstr "" - -#: src/tincd.c:316 src/tincd.c:335 -#, c-format -msgid "" -"Appending key to existing contents.\n" -"Make sure only one key is stored in the file.\n" -msgstr "" - -#: src/tincd.c:329 -msgid "public RSA key" -msgstr "" - -#: src/tincd.c:388 -msgid "Both netname and configuration directory given, using the latter..." -msgstr "" - -#: src/tincd.c:409 -#, c-format -msgid "%s version %s (built %s %s, protocol %d)\n" -msgstr "" - -#: src/tincd.c:411 -#, c-format -msgid "" -"Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen and others.\n" -"See the AUTHORS file for a complete list.\n" -"\n" -"tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" -"and you are welcome to redistribute it under certain conditions;\n" -"see the file COPYING for details.\n" -msgstr "" - -#: src/tincd.c:439 -msgid "mlockall() not supported on this platform!" -msgstr "" - -#: src/tincd.c:466 -msgid "Error initializing LZO compressor!" -msgstr "" - -#: src/tincd.c:507 -msgid "Terminating" -msgstr "" - -#: src/process.c:54 -#, c-format -msgid "Memory exhausted (couldn't allocate %d bytes), exitting." -msgstr "" - -#: src/process.c:79 src/process.c:129 -#, c-format -msgid "Could not open service manager: %s" -msgstr "" - -#: src/process.c:110 -#, c-format -msgid "Could not create %s service: %s" -msgstr "" - -#: src/process.c:116 -#, c-format -msgid "%s service installed" -msgstr "" - -#: src/process.c:119 -#, c-format -msgid "Could not start %s service: %s" -msgstr "" - -#: src/process.c:121 -#, c-format -msgid "%s service started" -msgstr "" - -#: src/process.c:136 -#, c-format -msgid "Could not open %s service: %s" -msgstr "" - -#: src/process.c:141 -#, c-format -msgid "Could not stop %s service: %s" -msgstr "" - -#: src/process.c:143 -#, c-format -msgid "%s service stopped" -msgstr "" - -#: src/process.c:146 -#, c-format -msgid "Could not remove %s service: %s" -msgstr "" - -#: src/process.c:150 -#, c-format -msgid "%s service removed" -msgstr "" - -#: src/process.c:161 src/process.c:164 -#, c-format -msgid "Got %s request" -msgstr "" - -#: src/process.c:167 -#, c-format -msgid "Got unexpected request %d" -msgstr "" - -#: src/process.c:255 -#, c-format -msgid "A tincd is already running for net `%s' with pid %ld.\n" -msgstr "" - -#: src/process.c:258 -#, c-format -msgid "A tincd is already running with pid %ld.\n" -msgstr "" - -#: src/process.c:264 -#, c-format -msgid "Could write pid file %s: %s\n" -msgstr "" - -#: src/process.c:286 -#, c-format -msgid "No other tincd is running for net `%s'.\n" -msgstr "" - -#: src/process.c:289 -#, c-format -msgid "No other tincd is running.\n" -msgstr "" - -#: src/process.c:298 -#, c-format -msgid "The tincd for net `%s' is no longer running. " -msgstr "" - -#: src/process.c:301 -#, c-format -msgid "The tincd is no longer running. " -msgstr "" - -#: src/process.c:303 -#, c-format -msgid "Removing stale lock file.\n" -msgstr "" - -#: src/process.c:336 -#, c-format -msgid "Couldn't detach from terminal: %s" -msgstr "" - -#: src/process.c:344 -#, c-format -msgid "Could not write pid file %s: %s\n" -msgstr "" - -#: src/process.c:355 -#, c-format -msgid "tincd %s (%s %s) starting, debug level %d" -msgstr "" - -#: src/process.c:390 -#, c-format -msgid "Executing script %s" -msgstr "" - -#: src/process.c:420 -#, c-format -msgid "Script %s exited with non-zero status %d" -msgstr "" - -#: src/process.c:425 -#, c-format -msgid "Script %s was killed by signal %d (%s)" -msgstr "" - -#: src/process.c:429 -#, c-format -msgid "Script %s terminated abnormally" -msgstr "" - -#: src/process.c:449 src/process.c:458 src/process.c:499 src/process.c:505 -#: src/process.c:523 -#, c-format -msgid "Got %s signal" -msgstr "" - -#: src/process.c:467 -#, c-format -msgid "Got another fatal signal %d (%s): not restarting." -msgstr "" - -#: src/process.c:476 -#, c-format -msgid "Got fatal signal %d (%s)" -msgstr "" - -#: src/process.c:480 -msgid "Trying to re-execute in 5 seconds..." -msgstr "" - -#: src/process.c:492 -msgid "Not restarting." -msgstr "" - -#: src/process.c:508 -#, c-format -msgid "Reverting to old debug level (%d)" -msgstr "" - -#: src/process.c:514 -#, c-format -msgid "" -"Temporarily setting debug level to 5. Kill me with SIGINT again to go back " -"to level %d." -msgstr "" - -#: src/process.c:547 -#, c-format -msgid "Got unexpected signal %d (%s)" -msgstr "" - -#: src/process.c:553 -#, c-format -msgid "Ignored signal %d (%s)" -msgstr "" - -#: src/process.c:607 -#, c-format -msgid "Installing signal handler for signal %d (%s) failed: %s\n" -msgstr "" - -#: src/route.c:111 -#, c-format -msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx" -msgstr "" - -#: src/route.c:149 -#, c-format -msgid "Subnet %s expired" -msgstr "" - -#: src/route.c:190 src/route.c:345 src/route.c:496 -#, c-format -msgid "Packet looping back to %s (%s)!" -msgstr "" - -#: src/route.c:289 -#, c-format -msgid "Length of packet (%d) doesn't match length in IPv4 header (%zd)" -msgstr "" - -#: src/route.c:293 -#, c-format -msgid "Fragmenting packet of %d bytes to %s (%s)" -msgstr "" - -#: src/route.c:333 -#, c-format -msgid "" -"Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%" -"d" -msgstr "" - -#: src/route.c:358 src/route.c:506 -#, c-format -msgid "Packet for %s (%s) length %d larger than MTU %d" -msgstr "" - -#: src/route.c:480 -#, c-format -msgid "" -"Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%" -"hx:%hx:%hx:%hx:%hx:%hx" -msgstr "" - -#: src/route.c:538 -#, c-format -msgid "Got neighbor solicitation request from %s (%s) while in router mode!" -msgstr "" - -#: src/route.c:557 -msgid "" -"Cannot route packet: received unknown type neighbor solicitation request" -msgstr "" - -#: src/route.c:576 -msgid "Cannot route packet: checksum error for neighbor solicitation request" -msgstr "" - -#: src/route.c:585 -#, c-format -msgid "" -"Cannot route packet: neighbor solicitation request for unknown address %hx:%" -"hx:%hx:%hx:%hx:%hx:%hx:%hx" -msgstr "" - -#: src/route.c:675 -#, c-format -msgid "Got ARP request from %s (%s) while in router mode!" -msgstr "" - -#: src/route.c:692 -msgid "Cannot route packet: received unknown type ARP request" -msgstr "" - -#: src/route.c:701 -#, c-format -msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d" -msgstr "" - -#: src/route.c:757 -#, c-format -msgid "Cannot route packet from %s (%s): unknown type %hx" -msgstr "" - -#: src/node.c:183 -msgid "Nodes:" -msgstr "" - -#: src/node.c:187 -#, c-format -msgid "" -" %s at %s cipher %d digest %d maclength %d compression %d options %lx status " -"%04x nexthop %s via %s pmtu %d (min %d max %d)" -msgstr "" - -#: src/node.c:194 -msgid "End of nodes." -msgstr "" - -#: src/edge.c:148 -msgid "Edges:" -msgstr "" - -#: src/edge.c:155 -#, c-format -msgid " %s to %s at %s options %lx weight %d" -msgstr "" - -#: src/edge.c:161 -msgid "End of edges." -msgstr "" - -#: src/graph.c:270 -#, c-format -msgid "Node %s (%s) became reachable" -msgstr "" - -#: src/graph.c:274 -#, c-format -msgid "Node %s (%s) became unreachable" -msgstr "" - -#: src/linux/device.c:72 src/solaris/device.c:57 src/bsd/device.c:63 -#: src/raw_socket/device.c:59 src/uml_socket/device.c:122 -#, c-format -msgid "Could not open %s: %s" -msgstr "" - -#: src/linux/device.c:83 -msgid "Linux tun/tap device (tun mode)" -msgstr "" - -#: src/linux/device.c:87 -msgid "Linux tun/tap device (tap mode)" -msgstr "" - -#: src/linux/device.c:97 -#, c-format -msgid "Old ioctl() request was needed for %s" -msgstr "" - -#: src/linux/device.c:105 -msgid "Linux ethertap device" -msgstr "" - -#: src/linux/device.c:110 src/solaris/device.c:106 src/bsd/device.c:133 -#: src/raw_socket/device.c:83 src/uml_socket/device.c:149 -#, c-format -msgid "%s is a %s" -msgstr "" - -#: src/linux/device.c:133 src/linux/device.c:144 src/linux/device.c:155 -#: src/solaris/device.c:125 src/bsd/device.c:152 src/bsd/device.c:181 -#: src/bsd/device.c:210 src/cygwin/device.c:239 src/mingw/device.c:112 -#: src/mingw/device.c:325 src/raw_socket/device.c:102 -#: src/uml_socket/device.c:239 -#, c-format -msgid "Error while reading from %s %s: %s" -msgstr "" - -#: src/linux/device.c:166 src/solaris/device.c:150 src/bsd/device.c:224 -#: src/cygwin/device.c:248 src/mingw/device.c:335 src/raw_socket/device.c:111 -#: src/uml_socket/device.c:249 -#, c-format -msgid "Read packet of %d bytes from %s" -msgstr "" - -#: src/linux/device.c:176 src/solaris/device.c:160 src/bsd/device.c:234 -#: src/cygwin/device.c:260 src/mingw/device.c:348 src/raw_socket/device.c:121 -#: src/uml_socket/device.c:267 -#, c-format -msgid "Writing packet of %d bytes to %s" -msgstr "" - -#: src/linux/device.c:183 src/linux/device.c:190 src/linux/device.c:199 -#: src/solaris/device.c:164 src/bsd/device.c:268 src/raw_socket/device.c:125 -#: src/uml_socket/device.c:272 -#, c-format -msgid "Can't write to %s %s: %s" -msgstr "" - -#: src/linux/device.c:215 src/solaris/device.c:178 src/bsd/device.c:296 -#: src/cygwin/device.c:277 src/mingw/device.c:365 src/raw_socket/device.c:139 -#: src/uml_socket/device.c:288 -#, c-format -msgid "Statistics for %s %s:" -msgstr "" - -#: src/linux/device.c:216 src/solaris/device.c:179 src/bsd/device.c:297 -#: src/cygwin/device.c:278 src/mingw/device.c:366 src/raw_socket/device.c:140 -#: src/uml_socket/device.c:289 -#, c-format -msgid " total bytes in: %10d" -msgstr "" - -#: src/linux/device.c:217 src/solaris/device.c:180 src/bsd/device.c:298 -#: src/cygwin/device.c:279 src/mingw/device.c:367 src/raw_socket/device.c:141 -#: src/uml_socket/device.c:290 -#, c-format -msgid " total bytes out: %10d" -msgstr "" - -#: src/solaris/device.c:69 -#, c-format -msgid "Could not open /dev/ip: %s" -msgstr "" - -#: src/solaris/device.c:75 -#, c-format -msgid "Can't assign new interface: %s" -msgstr "" - -#: src/solaris/device.c:80 -#, c-format -msgid "Could not open %s twice: %s" -msgstr "" - -#: src/solaris/device.c:86 -#, c-format -msgid "Can't push IP module: %s" -msgstr "" - -#: src/solaris/device.c:92 -#, c-format -msgid "Can't set PPA %d: %s" -msgstr "" - -#: src/solaris/device.c:97 -#, c-format -msgid "Can't link TUN device to IP: %s" -msgstr "" - -#: src/solaris/device.c:104 -msgid "Solaris tun device" -msgstr "" - -#: src/solaris/device.c:141 src/bsd/device.c:168 -#, c-format -msgid "Unknown IP version %d while reading packet from %s %s" -msgstr "" - -#: src/bsd/device.c:77 -#, c-format -msgid "Unknown device type %s!" -msgstr "" - -#: src/bsd/device.c:105 src/bsd/device.c:124 -msgid "Generic BSD tun device" -msgstr "" - -#: src/bsd/device.c:129 -msgid "Generic BSD tap device" -msgstr "" - -#: src/bsd/device.c:199 -#, c-format -msgid "Unknown address family %x while reading packet from %s %s" -msgstr "" - -#: src/bsd/device.c:240 src/bsd/device.c:277 src/cygwin/device.c:264 -#: src/mingw/device.c:352 -#, c-format -msgid "Error while writing to %s %s: %s" -msgstr "" - -#: src/bsd/device.c:262 -#, c-format -msgid "Unknown address family %x while writing packet to %s %s" -msgstr "" - -#: src/cygwin/device.c:71 src/mingw/device.c:159 -#, c-format -msgid "Unable to read registry: %s" -msgstr "" - -#: src/cygwin/device.c:123 src/mingw/device.c:210 -msgid "No Windows tap device found!" -msgstr "" - -#: src/cygwin/device.c:149 -#, c-format -msgid "Could not open Windows tap device %s (%s) for writing: %s" -msgstr "" - -#: src/cygwin/device.c:158 src/mingw/device.c:235 -#, c-format -msgid "Could not get MAC address from Windows tap device %s (%s): %s" -msgstr "" - -#: src/cygwin/device.c:187 -#, c-format -msgid "Could not open Windows tap device %s (%s) for reading: %s" -msgstr "" - -#: src/cygwin/device.c:193 -msgid "Tap reader forked and running." -msgstr "" - -#: src/cygwin/device.c:210 -msgid "Tap reader failed!" -msgstr "" - -#: src/cygwin/device.c:214 src/mingw/device.c:304 -msgid "Windows tap device" -msgstr "" - -#: src/cygwin/device.c:216 src/mingw/device.c:306 -#, c-format -msgid "%s (%s) is a %s" -msgstr "" - -#: src/mingw/device.c:93 -msgid "Tap reader running" -msgstr "" - -#: src/mingw/device.c:228 -#, c-format -msgid "%s (%s) is not a usable Windows tap device: %s" -msgstr "" - -#: src/raw_socket/device.c:56 -msgid "raw socket" -msgstr "" - -#: src/raw_socket/device.c:68 -#, c-format -msgid "Can't find interface %s: %s" -msgstr "" - -#: src/raw_socket/device.c:79 src/uml_socket/device.c:137 -#, c-format -msgid "Could not bind %s to %s: %s" -msgstr "" - -#: src/uml_socket/device.c:78 -msgid "UML network socket" -msgstr "" - -#: src/uml_socket/device.c:81 -#, c-format -msgid "Could not open write %s: %s" -msgstr "" - -#: src/uml_socket/device.c:95 -#, c-format -msgid "Could not open data %s: %s" -msgstr "" - -#: src/uml_socket/device.c:116 -#, c-format -msgid "Could not bind data %s: %s" -msgstr "" - -#: src/uml_socket/device.c:142 -#, c-format -msgid "Could not listen on %s %s: %s" -msgstr "" - -#: src/uml_socket/device.c:189 -#, c-format -msgid "Could not accept connection to %s %s: %s" -msgstr "" - -#: src/uml_socket/device.c:209 -#, c-format -msgid "Error while reading request from %s %s: %s" -msgstr "" - -#: src/uml_socket/device.c:216 -#, c-format -msgid "Unknown magic %x, version %d, request type %d from %s %s" -msgstr "" - -#: src/uml_socket/device.c:223 -#, c-format -msgid "Could not bind write %s: %s" -msgstr "" - -#: src/uml_socket/device.c:231 -msgid "Connection with UML established" -msgstr "" - -#: src/uml_socket/device.c:262 -#, c-format -msgid "Dropping packet of %d bytes to %s: not connected to UML yet" -msgstr "" diff --git a/src/Makefile.am b/src/Makefile.am index 10f07af..bdd1a3f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,4 @@ ## Produce this file with automake to get Makefile.in -# $Id: Makefile.am,v 1.4.4.33 2003/08/02 15:13:08 guus Exp $ sbin_PROGRAMS = tincd @@ -9,6 +8,10 @@ tincd_SOURCES = conf.c connection.c edge.c event.c graph.c logger.c meta.c net.c net_socket.c netutl.c node.c process.c protocol.c protocol_auth.c protocol_edge.c protocol_misc.c \ protocol_key.c protocol_subnet.c route.c subnet.c tincd.c +if TUNEMU +tincd_SOURCES += bsd/tunemu.c +endif + nodist_tincd_SOURCES = device.c DEFAULT_INCLUDES = @@ -16,9 +19,13 @@ DEFAULT_INCLUDES = INCLUDES = @INCLUDES@ -I$(top_builddir) -I$(top_srcdir)/lib noinst_HEADERS = conf.h connection.h device.h edge.h event.h graph.h logger.h meta.h net.h netutl.h node.h process.h \ - protocol.h route.h subnet.h + protocol.h route.h subnet.h bsd/tunemu.h -LIBS = @LIBS@ @LIBINTL@ +LIBS = @LIBS@ + +if TUNEMU +LIBS += -lpcap +endif tincd_LDADD = \ $(top_builddir)/lib/libvpn.a diff --git a/src/Makefile.in b/src/Makefile.in index 0ec0ddf..6bae860 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. +# Makefile.in generated by automake 1.11 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. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,13 +15,12 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.4.4.33 2003/08/02 15:13:08 guus Exp $ - VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -36,25 +36,29 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ sbin_PROGRAMS = tincd$(EXEEXT) +@TUNEMU_TRUE@am__append_1 = bsd/tunemu.c +@TUNEMU_TRUE@am__append_2 = -lpcap subdir = src DIST_COMMON = $(noinst_HEADERS) $(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/lzo.m4 $(top_srcdir)/m4/openssl.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 +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" -sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(sbin_PROGRAMS) +am__tincd_SOURCES_DIST = conf.c connection.c edge.c event.c graph.c \ + logger.c meta.c net.c net_packet.c net_setup.c net_socket.c \ + netutl.c node.c process.c protocol.c protocol_auth.c \ + protocol_edge.c protocol_misc.c protocol_key.c \ + protocol_subnet.c route.c subnet.c tincd.c bsd/tunemu.c +@TUNEMU_TRUE@am__objects_1 = tunemu.$(OBJEXT) am_tincd_OBJECTS = conf.$(OBJEXT) connection.$(OBJEXT) edge.$(OBJEXT) \ event.$(OBJEXT) graph.$(OBJEXT) logger.$(OBJEXT) \ meta.$(OBJEXT) net.$(OBJEXT) net_packet.$(OBJEXT) \ @@ -63,18 +67,19 @@ am_tincd_OBJECTS = conf.$(OBJEXT) connection.$(OBJEXT) edge.$(OBJEXT) \ protocol_auth.$(OBJEXT) protocol_edge.$(OBJEXT) \ protocol_misc.$(OBJEXT) protocol_key.$(OBJEXT) \ protocol_subnet.$(OBJEXT) route.$(OBJEXT) subnet.$(OBJEXT) \ - tincd.$(OBJEXT) + tincd.$(OBJEXT) $(am__objects_1) nodist_tincd_OBJECTS = device.$(OBJEXT) tincd_OBJECTS = $(am_tincd_OBJECTS) $(nodist_tincd_OBJECTS) tincd_DEPENDENCIES = $(top_builddir)/lib/libvpn.a depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(tincd_SOURCES) $(nodist_tincd_SOURCES) -DIST_SOURCES = $(tincd_SOURCES) +DIST_SOURCES = $(am__tincd_SOURCES_DIST) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags @@ -99,7 +104,6 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ GREP = @GREP@ INCLUDES = @INCLUDES@ -I$(top_builddir) -I$(top_srcdir)/lib INSTALL = @INSTALL@ @@ -107,38 +111,28 @@ 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@ @LIBINTL@ +LIBS = @LIBS@ $(am__append_2) 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_URL = @PACKAGE_URL@ 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@ @@ -186,17 +180,19 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = linux/device.c bsd/device.c solaris/device.c cygwin/device.c mingw/device.c mingw/common.h raw_socket/device.c uml_socket/device.c -tincd_SOURCES = conf.c connection.c edge.c event.c graph.c logger.c meta.c net.c net_packet.c net_setup.c \ - net_socket.c netutl.c node.c process.c protocol.c protocol_auth.c protocol_edge.c protocol_misc.c \ - protocol_key.c protocol_subnet.c route.c subnet.c tincd.c - +tincd_SOURCES = conf.c connection.c edge.c event.c graph.c logger.c \ + meta.c net.c net_packet.c net_setup.c net_socket.c netutl.c \ + node.c process.c protocol.c protocol_auth.c protocol_edge.c \ + protocol_misc.c protocol_key.c protocol_subnet.c route.c \ + subnet.c tincd.c $(am__append_1) nodist_tincd_SOURCES = device.c DEFAULT_INCLUDES = noinst_HEADERS = conf.h connection.h device.h edge.h event.h graph.h logger.h meta.h net.h netutl.h node.h process.h \ - protocol.h route.h subnet.h + protocol.h route.h subnet.h bsd/tunemu.h tincd_LDADD = \ $(top_builddir)/lib/libvpn.a @@ -210,14 +206,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -235,26 +231,41 @@ $(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 +$(am__aclocal_m4_deps): install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ - else :; fi; \ - done + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ - rm -f "$(DESTDIR)$(sbindir)/$$f"; \ - done + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) @@ -292,34 +303,49 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/route.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subnet.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tincd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tunemu.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 +@am__fastdepCC_TRUE@ $(am__mv) $(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 +@am__fastdepCC_TRUE@ $(am__mv) $(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) '$<'` +tunemu.o: bsd/tunemu.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tunemu.o -MD -MP -MF $(DEPDIR)/tunemu.Tpo -c -o tunemu.o `test -f 'bsd/tunemu.c' || echo '$(srcdir)/'`bsd/tunemu.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tunemu.Tpo $(DEPDIR)/tunemu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bsd/tunemu.c' object='tunemu.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tunemu.o `test -f 'bsd/tunemu.c' || echo '$(srcdir)/'`bsd/tunemu.c + +tunemu.obj: bsd/tunemu.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tunemu.obj -MD -MP -MF $(DEPDIR)/tunemu.Tpo -c -o tunemu.obj `if test -f 'bsd/tunemu.c'; then $(CYGPATH_W) 'bsd/tunemu.c'; else $(CYGPATH_W) '$(srcdir)/bsd/tunemu.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tunemu.Tpo $(DEPDIR)/tunemu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bsd/tunemu.c' object='tunemu.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tunemu.obj `if test -f 'bsd/tunemu.c'; then $(CYGPATH_W) 'bsd/tunemu.c'; else $(CYGPATH_W) '$(srcdir)/bsd/tunemu.c'; fi` + 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; } \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ @@ -327,29 +353,34 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ 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 \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -370,13 +401,17 @@ distdir: $(DISTFILES) 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; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 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 \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -410,6 +445,7 @@ clean-generic: distclean-generic: -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: @echo "This command is intended for maintainers to use" @@ -430,6 +466,8 @@ dvi-am: html: html-am +html-am: + info: info-am info-am: @@ -438,18 +476,28 @@ install-data-am: install-dvi: install-dvi-am +install-dvi-am: + install-exec-am: install-sbinPROGRAMS install-html: install-html-am +install-html-am: + install-info: install-info-am +install-info-am: + install-man: install-pdf: install-pdf-am +install-pdf-am: + install-ps: install-ps-am +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -489,6 +537,7 @@ uninstall-am: uninstall-sbinPROGRAMS dist-hook: rm -f `find . -type l` + # 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: diff --git a/src/bsd/device.c b/src/bsd/device.c index 1d4aeee..c2cd34c 100644 --- a/src/bsd/device.c +++ b/src/bsd/device.c @@ -1,7 +1,8 @@ /* device.c -- Interaction BSD tun/tap device Copyright (C) 2001-2005 Ivo Timmermans, - 2001-2008 Guus Sliepen + 2001-2009 Guus Sliepen + 2009 Grzegorz Dymarek 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 @@ -13,11 +14,9 @@ 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. - - $Id: device.c 1398 2004-11-01 15:18:53Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -27,6 +26,11 @@ #include "net.h" #include "route.h" #include "utils.h" +#include "xalloc.h" + +#ifdef HAVE_TUNEMU +#include "bsd/tunemu.h" +#endif #define DEFAULT_DEVICE "/dev/tun0" @@ -34,15 +38,20 @@ typedef enum device_type { DEVICE_TYPE_TUN, DEVICE_TYPE_TUNIFHEAD, DEVICE_TYPE_TAP, +#ifdef HAVE_TUNEMU + DEVICE_TYPE_TUNEMU, +#endif } device_type_t; int device_fd = -1; -char *device; -char *iface; -char *device_info; +char *device = NULL; +char *iface = NULL; +static char *device_info = NULL; static int device_total_in = 0; static int device_total_out = 0; -#if defined(HAVE_OPENBSD) || defined(HAVE_FREEBSD) +#if defined(TUNEMU) +static device_type_t device_type = DEVICE_TYPE_TUNEMU; +#elif defined(HAVE_OPENBSD) || defined(HAVE_FREEBSD) static device_type_t device_type = DEVICE_TYPE_TUNIFHEAD; #else static device_type_t device_type = DEVICE_TYPE_TUN; @@ -51,22 +60,19 @@ static device_type_t device_type = DEVICE_TYPE_TUN; bool setup_device(void) { char *type; - cp(); - if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - device = DEFAULT_DEVICE; + device = xstrdup(DEFAULT_DEVICE); if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) - iface = rindex(device, '/') ? rindex(device, '/') + 1 : device; - - if((device_fd = open(device, O_RDWR | O_NONBLOCK)) < 0) { - logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); - return false; - } + iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device); if(get_config_string(lookup_config(config_tree, "DeviceType"), &type)) { if(!strcasecmp(type, "tun")) /* use default */; +#ifdef HAVE_TUNEMU + else if(!strcasecmp(type, "tunemu")) + device_type = DEVICE_TYPE_TUNEMU; +#endif else if(!strcasecmp(type, "tunnohead")) device_type = DEVICE_TYPE_TUN; else if(!strcasecmp(type, "tunifhead")) @@ -74,7 +80,7 @@ bool setup_device(void) { else if(!strcasecmp(type, "tap")) device_type = DEVICE_TYPE_TAP; else { - logger(LOG_ERR, _("Unknown device type %s!"), type); + logger(LOG_ERR, "Unknown device type %s!", type); return false; } } else { @@ -82,6 +88,23 @@ bool setup_device(void) { device_type = DEVICE_TYPE_TAP; } + switch(device_type) { +#ifdef HAVE_TUNEMU + case DEVICE_TYPE_TUNEMU: { + char dynamic_name[256] = ""; + device_fd = tunemu_open(dynamic_name); + } + break; +#endif + default: + device_fd = open(device, O_RDWR | O_NONBLOCK); + } + + if(device_fd < 0) { + logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno)); + return false; + } + switch(device_type) { default: device_type = DEVICE_TYPE_TUN; @@ -90,7 +113,7 @@ bool setup_device(void) { { const int zero = 0; if(ioctl(device_fd, TUNSIFHEAD, &zero, sizeof zero) == -1) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "ioctl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "ioctl", strerror(errno)); return false; } } @@ -102,14 +125,14 @@ bool setup_device(void) { } #endif - device_info = _("Generic BSD tun device"); + device_info = "Generic BSD tun device"; break; case DEVICE_TYPE_TUNIFHEAD: #ifdef TUNSIFHEAD { const int one = 1; if(ioctl(device_fd, TUNSIFHEAD, &one, sizeof one) == -1) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "ioctl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "ioctl", strerror(errno)); return false; } } @@ -121,35 +144,67 @@ bool setup_device(void) { } #endif - device_info = _("Generic BSD tun device"); + device_info = "Generic BSD tun device"; break; case DEVICE_TYPE_TAP: if(routing_mode == RMODE_ROUTER) overwrite_mac = true; - device_info = _("Generic BSD tap device"); + device_info = "Generic BSD tap device"; +#ifdef TAPGIFNAME + { + struct ifreq ifr; + if(ioctl(device_fd, TAPGIFNAME, (void*)&ifr) == 0) { + if(iface) + free(iface); + iface = xstrdup(ifr.ifr_name); + } + } + +#endif break; +#ifdef HAVE_TUNEMU + case DEVICE_TYPE_TUNEMU: + device_info = "BSD tunemu device"; + break; +#endif } - logger(LOG_INFO, _("%s is a %s"), device, device_info); + logger(LOG_INFO, "%s is a %s", device, device_info); return true; } void close_device(void) { - cp(); + switch(device_type) { +#ifdef HAVE_TUNEMU + case DEVICE_TYPE_TUNEMU: + tunemu_close(device_fd); + break; +#endif + default: + close(device_fd); + } - close(device_fd); + free(device); + free(iface); } bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - switch(device_type) { case DEVICE_TYPE_TUN: - if((lenin = read(device_fd, packet->data + 14, MTU - 14)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, +#ifdef HAVE_TUNEMU + case DEVICE_TYPE_TUNEMU: + if(device_type == DEVICE_TYPE_TUNEMU) + lenin = tunemu_read(device_fd, packet->data + 14, MTU - 14); + else +#else + lenin = read(device_fd, packet->data + 14, MTU - 14); +#endif + + if(lenin <= 0) { + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -165,7 +220,7 @@ bool read_packet(vpn_packet_t *packet) { break; default: ifdebug(TRAFFIC) logger(LOG_ERR, - _ ("Unknown IP version %d while reading packet from %s %s"), + "Unknown IP version %d while reading packet from %s %s", packet->data[14] >> 4, device_info, device); return false; } @@ -178,7 +233,7 @@ bool read_packet(vpn_packet_t *packet) { struct iovec vector[2] = {{&type, sizeof(type)}, {packet->data + 14, MTU - 14}}; if((lenin = readv(device_fd, vector, 2)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -196,7 +251,7 @@ bool read_packet(vpn_packet_t *packet) { default: ifdebug(TRAFFIC) logger(LOG_ERR, - _ ("Unknown address family %x while reading packet from %s %s"), + "Unknown address family %x while reading packet from %s %s", ntohl(type), device_info, device); return false; } @@ -207,7 +262,7 @@ bool read_packet(vpn_packet_t *packet) { case DEVICE_TYPE_TAP: if((lenin = read(device_fd, packet->data, MTU)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -221,23 +276,20 @@ bool read_packet(vpn_packet_t *packet) { device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; } -bool write_packet(vpn_packet_t *packet) -{ - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), +bool write_packet(vpn_packet_t *packet) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); switch(device_type) { case DEVICE_TYPE_TUN: if(write(device_fd, packet->data + 14, packet->len - 14) < 0) { - logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, + logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -259,13 +311,13 @@ bool write_packet(vpn_packet_t *packet) break; default: ifdebug(TRAFFIC) logger(LOG_ERR, - _("Unknown address family %x while writing packet to %s %s"), + "Unknown address family %x while writing packet to %s %s", af, device_info, device); return false; } if(writev(device_fd, vector, 2) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -274,12 +326,22 @@ bool write_packet(vpn_packet_t *packet) case DEVICE_TYPE_TAP: if(write(device_fd, packet->data, packet->len) < 0) { - logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, + logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, strerror(errno)); return false; } break; +#ifdef HAVE_TUNEMU + case DEVICE_TYPE_TUNEMU: + if(tunemu_write(device_fd, packet->data + 14, packet->len - 14) < 0) { + logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, + device, strerror(errno)); + return false; + } + break; +#endif + default: return false; } @@ -289,11 +351,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/bsd/tunemu.c b/src/bsd/tunemu.c new file mode 100644 index 0000000..f532b04 --- /dev/null +++ b/src/bsd/tunemu.c @@ -0,0 +1,386 @@ +/* + * tunemu - Tun device emulation for Darwin + * Copyright (C) 2009 Friedrich Schöller + * + * 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 . + * + */ + +#include "tunemu.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PPPPROTO_CTL 1 + +#define PPP_IP 0x21 +#define PPP_IPV6 0x57 + +#define SC_LOOP_TRAFFIC 0x00000200 + +#define PPPIOCNEWUNIT _IOWR('t', 62, int) +#define PPPIOCSFLAGS _IOW('t', 89, int) +#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) +#define PPPIOCATTCHAN _IOW('t', 56, int) +#define PPPIOCGCHAN _IOR('t', 55, int) +#define PPPIOCCONNECT _IOW('t', 58, int) +#define PPPIOCGUNIT _IOR('t', 86, int) + +struct sockaddr_ppp +{ + u_int8_t ppp_len; + u_int8_t ppp_family; + u_int16_t ppp_proto; + u_int32_t ppp_cookie; +}; + +enum NPmode +{ + NPMODE_PASS, + NPMODE_DROP, + NPMODE_ERROR, + NPMODE_QUEUE +}; + +struct npioctl +{ + int protocol; + enum NPmode mode; +}; + +#define PPP_KEXT_PATH "/System/Library/Extensions/PPP.kext" + +#define ERROR_BUFFER_SIZE 1024 + +char tunemu_error[ERROR_BUFFER_SIZE]; + +static int pcap_use_count = 0; +static pcap_t *pcap = NULL; + +static int data_buffer_length = 0; +static char *data_buffer = NULL; + +static void tun_error(char *format, ...) +{ + va_list vl; + va_start(vl, format); + vsnprintf(tunemu_error, ERROR_BUFFER_SIZE, format, vl); + va_end(vl); +} + +static void tun_noerror() +{ + *tunemu_error = 0; +} + +static void closeall() +{ + int fd = getdtablesize(); + while (fd--) + close(fd); + + open("/dev/null", O_RDWR, 0); + dup(0); + dup(0); +} + +static int ppp_load_kext() +{ + int pid = fork(); + if (pid < 0) + { + tun_error("fork for ppp kext: %s", strerror(errno)); + return -1; + } + + if (pid == 0) + { + closeall(); + execle("/sbin/kextload", "kextload", PPP_KEXT_PATH, NULL, NULL); + exit(1); + } + + int status; + while (waitpid(pid, &status, 0) < 0) + { + if (errno == EINTR) + continue; + + tun_error("waitpid for ppp kext: %s", strerror(errno)); + return -1; + } + + if (WEXITSTATUS(status) != 0) + { + tun_error("could not load ppp kext \"%s\"", PPP_KEXT_PATH); + return -1; + } + + tun_noerror(); + return 0; +} + +static int ppp_new_instance() +{ + // create ppp socket + int ppp_sockfd = socket(PF_PPP, SOCK_RAW, PPPPROTO_CTL); + if (ppp_sockfd < 0) + { + if (ppp_load_kext() < 0) + return -1; + + ppp_sockfd = socket(PF_PPP, SOCK_RAW, PPPPROTO_CTL); + if (ppp_sockfd < 0) + { + tun_error("creating ppp socket: %s", strerror(errno)); + return -1; + } + } + + // connect to ppp procotol + struct sockaddr_ppp pppaddr; + pppaddr.ppp_len = sizeof(struct sockaddr_ppp); + pppaddr.ppp_family = AF_PPP; + pppaddr.ppp_proto = PPPPROTO_CTL; + pppaddr.ppp_cookie = 0; + if (connect(ppp_sockfd, (struct sockaddr *)&pppaddr, sizeof(struct sockaddr_ppp)) < 0) + { + tun_error("connecting ppp socket: %s", strerror(errno)); + close(ppp_sockfd); + return -1; + } + + tun_noerror(); + return ppp_sockfd; +} + +static int ppp_new_unit(int *unit_number) +{ + int fd = ppp_new_instance(); + if (fd < 0) + return -1; + + // create ppp unit + if (ioctl(fd, PPPIOCNEWUNIT, unit_number) < 0) + { + tun_error("creating ppp unit: %s", strerror(errno)); + close(fd); + return -1; + } + + tun_noerror(); + return fd; +} + +static int ppp_setup_unit(int unit_fd) +{ + // send traffic to program + int flags = SC_LOOP_TRAFFIC; + if (ioctl(unit_fd, PPPIOCSFLAGS, &flags) < 0) + { + tun_error("setting ppp loopback mode: %s", strerror(errno)); + return -1; + } + + // allow packets + struct npioctl npi; + npi.protocol = PPP_IP; + npi.mode = NPMODE_PASS; + if (ioctl(unit_fd, PPPIOCSNPMODE, &npi) < 0) + { + tun_error("starting ppp unit: %s", strerror(errno)); + return -1; + } + + tun_noerror(); + return 0; +} + +static int open_pcap() +{ + if (pcap != NULL) + { + pcap_use_count++; + return 0; + } + + char errbuf[PCAP_ERRBUF_SIZE]; + pcap = pcap_open_live("lo0", BUFSIZ, 0, 1, errbuf); + pcap_use_count = 1; + + if (pcap == NULL) + { + tun_error("opening pcap: %s", errbuf); + return -1; + } + + tun_noerror(); + return 0; +} + +static void close_pcap() +{ + if (pcap == NULL) + return; + + pcap_use_count--; + if (pcap_use_count == 0) + { + pcap_close(pcap); + pcap = NULL; + } +} + +static void allocate_data_buffer(int size) +{ + if (data_buffer_length < size) + { + free(data_buffer); + data_buffer_length = size; + data_buffer = malloc(data_buffer_length); + } +} + +static void make_device_name(tunemu_device device, int unit_number) +{ + snprintf(device, sizeof(tunemu_device), "ppp%d", unit_number); +} + +static int check_device_name(tunemu_device device) +{ + if (strlen(device) < 4) + return -1; + + int unit_number = atoi(device + 3); + if (unit_number < 0 || unit_number > 999) + return -1; + + tunemu_device compare; + make_device_name(compare, unit_number); + + if (strcmp(device, compare) != 0) + return -1; + + return 0; +} + +int tunemu_open(tunemu_device device) +{ + int ppp_unit_number = -1; + if (device[0] != 0) + { + if (check_device_name(device) < 0) + { + tun_error("invalid device name \"%s\"", device); + return -1; + } + + ppp_unit_number = atoi(device + 3); + } + + int ppp_unit_fd = ppp_new_unit(&ppp_unit_number); + if (ppp_unit_fd < 0) + return -1; + + if (ppp_setup_unit(ppp_unit_fd) < 0) + { + close(ppp_unit_fd); + return -1; + } + + if (open_pcap() < 0) + { + close(ppp_unit_fd); + return -1; + } + + make_device_name(device, ppp_unit_number); + + return ppp_unit_fd; +} + +int tunemu_close(int ppp_sockfd) +{ + int ret = close(ppp_sockfd); + + if (ret == 0) + close_pcap(); + + return ret; +} + +int tunemu_read(int ppp_sockfd, char *buffer, int length) +{ + allocate_data_buffer(length + 2); + + length = read(ppp_sockfd, data_buffer, length + 2); + if (length < 0) + { + tun_error("reading packet: %s", strerror(errno)); + return length; + } + tun_noerror(); + + length -= 2; + if (length < 0) + return 0; + + memcpy(buffer, data_buffer + 2, length); + + return length; +} + +int tunemu_write(int ppp_sockfd, char *buffer, int length) +{ + allocate_data_buffer(length + 4); + + data_buffer[0] = 0x02; + data_buffer[1] = 0x00; + data_buffer[2] = 0x00; + data_buffer[3] = 0x00; + + memcpy(data_buffer + 4, buffer, length); + + if (pcap == NULL) + { + tun_error("pcap not open"); + return -1; + } + + length = pcap_inject(pcap, data_buffer, length + 4); + if (length < 0) + { + tun_error("injecting packet: %s", pcap_geterr(pcap)); + return length; + } + tun_noerror(); + + length -= 4; + if (length < 0) + return 0; + + return length; +} diff --git a/src/bsd/tunemu.h b/src/bsd/tunemu.h new file mode 100644 index 0000000..42b1785 --- /dev/null +++ b/src/bsd/tunemu.h @@ -0,0 +1,32 @@ +/* + * tunemu - Tun device emulation for Darwin + * Copyright (C) 2009 Friedrich Schöller + * + * 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 . + * + */ + +#ifndef TUNEMU_H +#define TUNEMU_H + +typedef char tunemu_device[7]; + +extern char tunemu_error[]; + +int tunemu_open(tunemu_device dev); +int tunemu_close(int fd); +int tunemu_read(int fd, char *buffer, int length); +int tunemu_write(int fd, char *buffer, int length); + +#endif diff --git a/src/conf.c b/src/conf.c index 1194c36..e67c7ac 100644 --- a/src/conf.c +++ b/src/conf.c @@ -2,7 +2,7 @@ conf.c -- configuration code Copyright (C) 1998 Robert van der Meulen 1998-2005 Ivo Timmermans - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen 2000 Cris van Pelt This program is free software; you can redistribute it and/or modify @@ -15,11 +15,9 @@ 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. - - $Id: conf.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -38,8 +36,7 @@ int pingtimeout = 0; /* seconds to wait for response */ char *confbase = NULL; /* directory in which all config files are */ char *netname = NULL; /* name of the vpn network */ -static int config_compare(const config_t *a, const config_t *b) -{ +static int config_compare(const config_t *a, const config_t *b) { int result; result = strcasecmp(a->variable, b->variable); @@ -55,32 +52,20 @@ static int config_compare(const config_t *a, const config_t *b) return strcmp(a->file, b->file); } -void init_configuration(avl_tree_t ** config_tree) -{ - cp(); - +void init_configuration(avl_tree_t ** config_tree) { *config_tree = avl_alloc_tree((avl_compare_t) config_compare, (avl_action_t) free_config); } -void exit_configuration(avl_tree_t ** config_tree) -{ - cp(); - +void exit_configuration(avl_tree_t ** config_tree) { avl_delete_tree(*config_tree); *config_tree = NULL; } -config_t *new_config(void) -{ - cp(); - +config_t *new_config(void) { return xmalloc_and_zero(sizeof(config_t)); } -void free_config(config_t *cfg) -{ - cp(); - +void free_config(config_t *cfg) { if(cfg->variable) free(cfg->variable); @@ -93,19 +78,13 @@ void free_config(config_t *cfg) free(cfg); } -void config_add(avl_tree_t *config_tree, config_t *cfg) -{ - cp(); - +void config_add(avl_tree_t *config_tree, config_t *cfg) { avl_insert(config_tree, cfg); } -config_t *lookup_config(avl_tree_t *config_tree, char *variable) -{ +config_t *lookup_config(avl_tree_t *config_tree, char *variable) { config_t cfg, *found; - cp(); - cfg.variable = variable; cfg.file = ""; cfg.line = 0; @@ -121,13 +100,10 @@ config_t *lookup_config(avl_tree_t *config_tree, char *variable) return found; } -config_t *lookup_config_next(avl_tree_t *config_tree, const config_t *cfg) -{ +config_t *lookup_config_next(avl_tree_t *config_tree, const config_t *cfg) { avl_node_t *node; config_t *found; - cp(); - node = avl_search_node(config_tree, cfg); if(node) { @@ -142,10 +118,7 @@ config_t *lookup_config_next(avl_tree_t *config_tree, const config_t *cfg) return NULL; } -bool get_config_bool(const config_t *cfg, bool *result) -{ - cp(); - +bool get_config_bool(const config_t *cfg, bool *result) { if(!cfg) return false; @@ -157,32 +130,26 @@ bool get_config_bool(const config_t *cfg, bool *result) return true; } - logger(LOG_ERR, _("\"yes\" or \"no\" expected for configuration variable %s in %s line %d"), + logger(LOG_ERR, "\"yes\" or \"no\" expected for configuration variable %s in %s line %d", cfg->variable, cfg->file, cfg->line); return false; } -bool get_config_int(const config_t *cfg, int *result) -{ - cp(); - +bool get_config_int(const config_t *cfg, int *result) { if(!cfg) return false; if(sscanf(cfg->value, "%d", result) == 1) return true; - logger(LOG_ERR, _("Integer expected for configuration variable %s in %s line %d"), + logger(LOG_ERR, "Integer expected for configuration variable %s in %s line %d", cfg->variable, cfg->file, cfg->line); return false; } -bool get_config_string(const config_t *cfg, char **result) -{ - cp(); - +bool get_config_string(const config_t *cfg, char **result) { if(!cfg) return false; @@ -191,12 +158,9 @@ bool get_config_string(const config_t *cfg, char **result) return true; } -bool get_config_address(const config_t *cfg, struct addrinfo **result) -{ +bool get_config_address(const config_t *cfg, struct addrinfo **result) { struct addrinfo *ai; - cp(); - if(!cfg) return false; @@ -207,23 +171,20 @@ bool get_config_address(const config_t *cfg, struct addrinfo **result) return true; } - logger(LOG_ERR, _("Hostname or IP address expected for configuration variable %s in %s line %d"), + logger(LOG_ERR, "Hostname or IP address expected for configuration variable %s in %s line %d", cfg->variable, cfg->file, cfg->line); return false; } -bool get_config_subnet(const config_t *cfg, subnet_t ** result) -{ +bool get_config_subnet(const config_t *cfg, subnet_t ** result) { subnet_t subnet = {0}; - cp(); - if(!cfg) return false; if(!str2net(&subnet, cfg->value)) { - logger(LOG_ERR, _("Subnet expected for configuration variable %s in %s line %d"), + logger(LOG_ERR, "Subnet expected for configuration variable %s in %s line %d", cfg->variable, cfg->file, cfg->line); return false; } @@ -234,7 +195,7 @@ bool get_config_subnet(const config_t *cfg, subnet_t ** result) && !maskcheck(&subnet.net.ipv4.address, subnet.net.ipv4.prefixlength, sizeof(ipv4_t))) || ((subnet.type == SUBNET_IPV6) && !maskcheck(&subnet.net.ipv6.address, subnet.net.ipv6.prefixlength, sizeof(ipv6_t)))) { - logger(LOG_ERR, _ ("Network address and prefix length do not match for configuration variable %s in %s line %d"), + logger(LOG_ERR, "Network address and prefix length do not match for configuration variable %s in %s line %d", cfg->variable, cfg->file, cfg->line); return false; } @@ -254,8 +215,7 @@ bool get_config_subnet(const config_t *cfg, subnet_t ** result) given, and buf needs to be expanded, the var pointed to by buflen will be increased. */ -static char *readline(FILE * fp, char **buf, size_t *buflen) -{ +static char *readline(FILE * fp, char **buf, size_t *buflen) { char *newline = NULL; char *p; char *line; /* The array that contains everything that has been read so far */ @@ -301,6 +261,8 @@ static char *readline(FILE * fp, char **buf, size_t *buflen) size = newsize; } else { *newline = '\0'; /* kill newline */ + if(newline > p && newline[-1] == '\r') /* and carriage return if necessary */ + newline[-1] = '\0'; break; /* yay */ } } @@ -317,8 +279,7 @@ static char *readline(FILE * fp, char **buf, size_t *buflen) Parse a configuration file and put the results in the configuration tree starting at *base. */ -int read_config_file(avl_tree_t *config_tree, const char *fname) -{ +int read_config_file(avl_tree_t *config_tree, const char *fname) { int err = -2; /* Parse error */ FILE *fp; char *buffer, *line; @@ -329,12 +290,10 @@ int read_config_file(avl_tree_t *config_tree, const char *fname) config_t *cfg; size_t bufsize; - cp(); - fp = fopen(fname, "r"); if(!fp) { - logger(LOG_ERR, _("Cannot open config file %s: %s"), fname, + logger(LOG_ERR, "Cannot open config file %s: %s", fname, strerror(errno)); return -3; } @@ -388,7 +347,7 @@ int read_config_file(avl_tree_t *config_tree, const char *fname) if(!*value) { - logger(LOG_ERR, _("No value for variable `%s' on line %d while reading config file %s"), + logger(LOG_ERR, "No value for variable `%s' on line %d while reading config file %s", variable, lineno, fname); break; } @@ -408,18 +367,15 @@ int read_config_file(avl_tree_t *config_tree, const char *fname) return err; } -bool read_server_config() -{ +bool read_server_config() { char *fname; int x; - cp(); - - asprintf(&fname, "%s/tinc.conf", confbase); + xasprintf(&fname, "%s/tinc.conf", confbase); x = read_config_file(config_tree, fname); if(x == -1) { /* System error: complain */ - logger(LOG_ERR, _("Failed to read `%s': %s"), fname, strerror(errno)); + logger(LOG_ERR, "Failed to read `%s': %s", fname, strerror(errno)); } free(fname); @@ -427,8 +383,7 @@ bool read_server_config() return x == 0; } -FILE *ask_and_open(const char *filename, const char *what, const char *mode) -{ +FILE *ask_and_open(const char *filename, const char *what) { FILE *r; char *directory; char *fn; @@ -441,14 +396,14 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) fn = xstrdup(filename); } else { /* Ask for a file and/or directory name. */ - fprintf(stdout, _("Please enter a file to save %s to [%s]: "), + fprintf(stdout, "Please enter a file to save %s to [%s]: ", what, filename); fflush(stdout); fn = readline(stdin, NULL, NULL); if(!fn) { - fprintf(stderr, _("Error while reading stdin: %s\n"), + fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno)); return NULL; } @@ -467,7 +422,7 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) char *p; directory = get_current_dir_name(); - asprintf(&p, "%s/%s", directory, fn); + xasprintf(&p, "%s/%s", directory, fn); free(fn); free(directory); fn = p; @@ -477,10 +432,10 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) /* Open it first to keep the inode busy */ - r = fopen(fn, mode); + r = fopen(fn, "r+") ?: fopen(fn, "w+"); if(!r) { - fprintf(stderr, _("Error opening file `%s': %s\n"), + fprintf(stderr, "Error opening file `%s': %s\n", fn, strerror(errno)); free(fn); return NULL; @@ -490,3 +445,34 @@ FILE *ask_and_open(const char *filename, const char *what, const char *mode) return r; } + +bool disable_old_keys(FILE *f) { + char buf[100]; + long pos; + bool disabled = false; + + rewind(f); + pos = ftell(f); + + while(fgets(buf, sizeof buf, f)) { + if(!strncmp(buf, "-----BEGIN RSA", 14)) { + buf[11] = 'O'; + buf[12] = 'L'; + buf[13] = 'D'; + fseek(f, pos, SEEK_SET); + fputs(buf, f); + disabled = true; + } + else if(!strncmp(buf, "-----END RSA", 12)) { + buf[ 9] = 'O'; + buf[10] = 'L'; + buf[11] = 'D'; + fseek(f, pos, SEEK_SET); + fputs(buf, f); + disabled = true; + } + pos = ftell(f); + } + + return disabled; +} diff --git a/src/conf.h b/src/conf.h index baf1193..be49733 100644 --- a/src/conf.h +++ b/src/conf.h @@ -1,7 +1,7 @@ /* conf.h -- header for conf.c Copyright (C) 1998-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: conf.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_CONF_H__ @@ -58,7 +56,8 @@ extern bool get_config_subnet(const config_t *, struct subnet_t **); extern int read_config_file(avl_tree_t *, const char *); extern bool read_server_config(void); -extern FILE *ask_and_open(const char *, const char *, const char *); +extern FILE *ask_and_open(const char *, const char *); extern bool is_safe_path(const char *); +extern bool disable_old_keys(FILE *); #endif /* __TINC_CONF_H__ */ diff --git a/src/connection.c b/src/connection.c index 1e6bb00..6e942f8 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1,7 +1,8 @@ /* connection.c -- connection list management - Copyright (C) 2000-2007 Guus Sliepen , + Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans + 2008 Max Rijevski 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 @@ -13,11 +14,9 @@ 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. - - $Id: connection.c 1600 2008-12-23 23:14:37Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -35,35 +34,25 @@ avl_tree_t *connection_tree; /* Meta connections */ connection_t *broadcast; -static int connection_compare(const connection_t *a, const connection_t *b) -{ - return (void *)a - (void *)b; +static int connection_compare(const connection_t *a, const connection_t *b) { + return a < b ? -1 : a == b ? 0 : 1; } -void init_connections(void) -{ - cp(); - +void init_connections(void) { connection_tree = avl_alloc_tree((avl_compare_t) connection_compare, (avl_action_t) free_connection); broadcast = new_connection(); - broadcast->name = xstrdup(_("everyone")); - broadcast->hostname = xstrdup(_("BROADCAST")); + broadcast->name = xstrdup("everyone"); + broadcast->hostname = xstrdup("BROADCAST"); } -void exit_connections(void) -{ - cp(); - +void exit_connections(void) { avl_delete_tree(connection_tree); free_connection(broadcast); } -connection_t *new_connection(void) -{ +connection_t *new_connection(void) { connection_t *c; - cp(); - c = xmalloc_and_zero(sizeof(connection_t)); if(!c) @@ -74,10 +63,7 @@ connection_t *new_connection(void) return c; } -void free_connection(connection_t *c) -{ - cp(); - +void free_connection(connection_t *c) { if(c->name) free(c->name); @@ -118,47 +104,35 @@ void free_connection(connection_t *c) free(c); } -void connection_add(connection_t *c) -{ - cp(); - +void connection_add(connection_t *c) { avl_insert(connection_tree, c); } -void connection_del(connection_t *c) -{ - cp(); - +void connection_del(connection_t *c) { avl_delete(connection_tree, c); } -void dump_connections(void) -{ +void dump_connections(void) { avl_node_t *node; connection_t *c; - cp(); - - logger(LOG_DEBUG, _("Connections:")); + logger(LOG_DEBUG, "Connections:"); for(node = connection_tree->head; node; node = node->next) { c = node->data; - logger(LOG_DEBUG, _(" %s at %s options %lx socket %d status %04x outbuf %d/%d/%d"), - c->name, c->hostname, c->options, c->socket, c->status.value, + logger(LOG_DEBUG, " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d", + c->name, c->hostname, c->options, c->socket, bitfield_to_int(&c->status, sizeof c->status), c->outbufsize, c->outbufstart, c->outbuflen); } - logger(LOG_DEBUG, _("End of connections.")); + logger(LOG_DEBUG, "End of connections."); } -bool read_connection_config(connection_t *c) -{ +bool read_connection_config(connection_t *c) { char *fname; int x; - cp(); - - asprintf(&fname, "%s/hosts/%s", confbase, c->name); + xasprintf(&fname, "%s/hosts/%s", confbase, c->name); x = read_config_file(c->config_tree, fname); free(fname); diff --git a/src/connection.h b/src/connection.h index 31b3d5d..24c95f4 100644 --- a/src/connection.h +++ b/src/connection.h @@ -1,6 +1,6 @@ /* connection.h -- header for connection.c - Copyright (C) 2000-2006 Guus Sliepen , + Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: connection.h 1456 2006-08-08 13:21:08Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_CONNECTION_H__ @@ -32,20 +30,17 @@ #define OPTION_TCPONLY 0x0002 #define OPTION_PMTU_DISCOVERY 0x0004 -typedef union connection_status_t { - struct { - int pinged:1; /* sent ping */ - int active:1; /* 1 if active.. */ - int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */ - int termreq:1; /* the termination of this connection was requested */ - int remove:1; /* Set to 1 if you want this connection removed */ - int timeout:1; /* 1 if gotten timeout */ - int encryptout:1; /* 1 if we can encrypt outgoing traffic */ - int decryptin:1; /* 1 if we have to decrypt incoming traffic */ - int mst:1; /* 1 if this connection is part of a minimum spanning tree */ - int unused:23; - }; - uint32_t value; +typedef struct connection_status_t { + int pinged:1; /* sent ping */ + int active:1; /* 1 if active.. */ + int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */ + int termreq:1; /* the termination of this connection was requested */ + int remove:1; /* Set to 1 if you want this connection removed */ + int timeout:1; /* 1 if gotten timeout */ + int encryptout:1; /* 1 if we can encrypt outgoing traffic */ + int decryptin:1; /* 1 if we have to decrypt incoming traffic */ + int mst:1; /* 1 if this connection is part of a minimum spanning tree */ + int unused:23; } connection_status_t; #include "edge.h" diff --git a/src/cygwin/device.c b/src/cygwin/device.c index 755a092..958184b 100644 --- a/src/cygwin/device.c +++ b/src/cygwin/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Windows tap driver in a Cygwin environment Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2006 Guus Sliepen + 2002-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -38,7 +36,7 @@ int device_fd = -1; static HANDLE device_handle = INVALID_HANDLE_VALUE; char *device = NULL; char *iface = NULL; -char *device_info = NULL; +static char *device_info = NULL; static int device_total_in = 0; static int device_total_out = 0; @@ -46,8 +44,7 @@ static int device_total_out = 0; static pid_t reader_pid; static int sp[2]; -bool setup_device(void) -{ +bool setup_device(void) { HKEY key, key2; int i, err; @@ -60,15 +57,13 @@ bool setup_device(void) bool found = false; - cp(); - get_config_string(lookup_config(config_tree, "Device"), &device); get_config_string(lookup_config(config_tree, "Interface"), &iface); /* Open registry and look for network adapters */ if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) { - logger(LOG_ERR, _("Unable to read registry: %s"), winerror(GetLastError())); + logger(LOG_ERR, "Unable to read registry: %s", winerror(GetLastError())); return false; } @@ -120,7 +115,7 @@ bool setup_device(void) RegCloseKey(key); if(!found) { - logger(LOG_ERR, _("No Windows tap device found!")); + logger(LOG_ERR, "No Windows tap device found!"); return false; } @@ -137,7 +132,7 @@ bool setup_device(void) Furthermore I don't really know how to do it the "Windows" way. */ if(socketpair(AF_UNIX, SOCK_DGRAM, PF_UNIX, sp)) { - logger(LOG_DEBUG, _("System call `%s' failed: %s"), "socketpair", strerror(errno)); + logger(LOG_DEBUG, "System call `%s' failed: %s", "socketpair", strerror(errno)); return false; } @@ -146,7 +141,7 @@ bool setup_device(void) device_handle = CreateFile(tapname, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM , 0); if(device_handle == INVALID_HANDLE_VALUE) { - logger(LOG_ERR, _("Could not open Windows tap device %s (%s) for writing: %s"), device, iface, winerror(GetLastError())); + logger(LOG_ERR, "Could not open Windows tap device %s (%s) for writing: %s", device, iface, winerror(GetLastError())); return false; } @@ -155,7 +150,7 @@ bool setup_device(void) /* Get MAC address from tap device */ if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) { - logger(LOG_ERR, _("Could not get MAC address from Windows tap device %s (%s): %s"), device, iface, winerror(GetLastError())); + logger(LOG_ERR, "Could not get MAC address from Windows tap device %s (%s): %s", device, iface, winerror(GetLastError())); return false; } @@ -168,7 +163,7 @@ bool setup_device(void) reader_pid = fork(); if(reader_pid == -1) { - logger(LOG_DEBUG, _("System call `%s' failed: %s"), "fork", strerror(errno)); + logger(LOG_DEBUG, "System call `%s' failed: %s", "fork", strerror(errno)); return false; } @@ -184,13 +179,13 @@ bool setup_device(void) device_handle = CreateFile(tapname, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); if(device_handle == INVALID_HANDLE_VALUE) { - logger(LOG_ERR, _("Could not open Windows tap device %s (%s) for reading: %s"), device, iface, winerror(GetLastError())); + logger(LOG_ERR, "Could not open Windows tap device %s (%s) for reading: %s", device, iface, winerror(GetLastError())); buf[0] = 0; write(sp[1], buf, 1); exit(1); } - logger(LOG_DEBUG, _("Tap reader forked and running.")); + logger(LOG_DEBUG, "Tap reader forked and running."); /* Notify success */ @@ -207,36 +202,33 @@ bool setup_device(void) read(device_fd, &gelukt, 1); if(gelukt != 1) { - logger(LOG_DEBUG, _("Tap reader failed!")); + logger(LOG_DEBUG, "Tap reader failed!"); return false; } - device_info = _("Windows tap device"); + device_info = "Windows tap device"; - logger(LOG_INFO, _("%s (%s) is a %s"), device, iface, device_info); + logger(LOG_INFO, "%s (%s) is a %s", device, iface, device_info); return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { close(sp[0]); close(sp[1]); CloseHandle(device_handle); kill(reader_pid, SIGKILL); + + free(device); + free(iface); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - if((lenin = read(sp[0], packet->data, MTU)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -245,23 +237,20 @@ bool read_packet(vpn_packet_t *packet) device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; } -bool write_packet(vpn_packet_t *packet) -{ +bool write_packet(vpn_packet_t *packet) { long lenout; - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); if(!WriteFile (device_handle, packet->data, packet->len, &lenout, NULL)) { - logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, device, winerror(GetLastError())); + logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, winerror(GetLastError())); return false; } @@ -270,11 +259,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/device.h b/src/device.h index ff3898b..5841253 100644 --- a/src/device.h +++ b/src/device.h @@ -1,6 +1,6 @@ /* net.h -- generic header for device.c - Copyright (C) 2001-2005 Ivo Timmermans + Copyright (C) 2001-2005 Ivo Timmermans 2001-2006 Guus Sliepen This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: device.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_DEVICE_H__ diff --git a/src/edge.c b/src/edge.c index b168acc..9e1b31e 100644 --- a/src/edge.c +++ b/src/edge.c @@ -13,11 +13,9 @@ 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. - - $Id: edge.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -32,13 +30,11 @@ avl_tree_t *edge_weight_tree; /* Tree with all edges, sorted on weight */ -static int edge_compare(const edge_t *a, const edge_t *b) -{ +static int edge_compare(const edge_t *a, const edge_t *b) { return strcmp(a->to->name, b->to->name); } -static int edge_weight_compare(const edge_t *a, const edge_t *b) -{ +static int edge_weight_compare(const edge_t *a, const edge_t *b) { int result; result = a->weight - b->weight; @@ -54,56 +50,35 @@ static int edge_weight_compare(const edge_t *a, const edge_t *b) return strcmp(a->to->name, b->to->name); } -void init_edges(void) -{ - cp(); - +void init_edges(void) { edge_weight_tree = avl_alloc_tree((avl_compare_t) edge_weight_compare, NULL); } -avl_tree_t *new_edge_tree(void) -{ - cp(); - +avl_tree_t *new_edge_tree(void) { return avl_alloc_tree((avl_compare_t) edge_compare, (avl_action_t) free_edge); } -void free_edge_tree(avl_tree_t *edge_tree) -{ - cp(); - +void free_edge_tree(avl_tree_t *edge_tree) { avl_delete_tree(edge_tree); } -void exit_edges(void) -{ - cp(); - +void exit_edges(void) { avl_delete_tree(edge_weight_tree); } /* Creation and deletion of connection elements */ -edge_t *new_edge(void) -{ - cp(); - +edge_t *new_edge(void) { return xmalloc_and_zero(sizeof(edge_t)); } -void free_edge(edge_t *e) -{ - cp(); - +void free_edge(edge_t *e) { sockaddrfree(&e->address); free(e); } -void edge_add(edge_t *e) -{ - cp(); - +void edge_add(edge_t *e) { avl_insert(edge_weight_tree, e); avl_insert(e->from->edge_tree, e); @@ -113,10 +88,7 @@ void edge_add(edge_t *e) e->reverse->reverse = e; } -void edge_del(edge_t *e) -{ - cp(); - +void edge_del(edge_t *e) { if(e->reverse) e->reverse->reverse = NULL; @@ -124,39 +96,33 @@ void edge_del(edge_t *e) avl_delete(e->from->edge_tree, e); } -edge_t *lookup_edge(node_t *from, node_t *to) -{ +edge_t *lookup_edge(node_t *from, node_t *to) { edge_t v; - cp(); - v.from = from; v.to = to; return avl_search(from->edge_tree, &v); } -void dump_edges(void) -{ +void dump_edges(void) { avl_node_t *node, *node2; node_t *n; edge_t *e; char *address; - cp(); - - logger(LOG_DEBUG, _("Edges:")); + logger(LOG_DEBUG, "Edges:"); for(node = node_tree->head; node; node = node->next) { n = node->data; for(node2 = n->edge_tree->head; node2; node2 = node2->next) { e = node2->data; address = sockaddr2hostname(&e->address); - logger(LOG_DEBUG, _(" %s to %s at %s options %lx weight %d"), + logger(LOG_DEBUG, " %s to %s at %s options %lx weight %d", e->from->name, e->to->name, address, e->options, e->weight); free(address); } } - logger(LOG_DEBUG, _("End of edges.")); + logger(LOG_DEBUG, "End of edges."); } diff --git a/src/edge.h b/src/edge.h index 2d28284..dc5cf46 100644 --- a/src/edge.h +++ b/src/edge.h @@ -13,11 +13,9 @@ 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. - - $Id: edge.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_EDGE_H__ diff --git a/src/event.c b/src/event.c index 29280e1..99e6a23 100644 --- a/src/event.c +++ b/src/event.c @@ -1,6 +1,6 @@ /* event.c -- event queue - Copyright (C) 2002-2007 Guus Sliepen , + Copyright (C) 2002-2009 Guus Sliepen , 2002-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: event.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -32,8 +30,7 @@ extern time_t now; int id; -static int event_compare(const event_t *a, const event_t *b) -{ +static int event_compare(const event_t *a, const event_t *b) { if(a->time > b->time) return 1; @@ -43,82 +40,66 @@ static int event_compare(const event_t *a, const event_t *b) return a->id - b->id; } -void init_events(void) -{ - cp(); - - event_tree = avl_alloc_tree((avl_compare_t) event_compare, NULL); +void init_events(void) { + event_tree = avl_alloc_tree((avl_compare_t) event_compare, (avl_action_t) free_event); } -void exit_events(void) -{ - cp(); - +void exit_events(void) { avl_delete_tree(event_tree); } -void flush_events(void) -{ - avl_tree_t *to_flush; +void expire_events(void) { + avl_node_t *node; event_t *event; + time_t diff; /* - * Events can be inserted from event handlers, so only flush events - * already in the priority queue. + * Make all events appear expired by substracting the difference between + * the expiration time of the last event and the current time. */ - cp(); + if(!event_tree->tail) + return; - to_flush = event_tree; - init_events(); - while (to_flush->head) { - event = to_flush->head->data; - event->handler(event->data); - avl_delete(to_flush, event); + event = event_tree->tail->data; + if(event->time < now) + return; + + diff = 1 + event->time - now; + + for(node = event_tree->head; node; node = node->next) { + event = node->data; + event->time -= diff; } - avl_delete_tree(to_flush); } -event_t *new_event(void) -{ - cp(); - +event_t *new_event(void) { return xmalloc_and_zero(sizeof(event_t)); } -void free_event(event_t *event) -{ - cp(); - +void free_event(event_t *event) { free(event); } -void event_add(event_t *event) -{ - cp(); - +void event_add(event_t *event) { event->id = ++id; avl_insert(event_tree, event); } -void event_del(event_t *event) -{ - cp(); - +void event_del(event_t *event) { avl_delete(event_tree, event); } -event_t *get_expired_event(void) -{ +event_t *get_expired_event(void) { event_t *event; - cp(); - if(event_tree->head) { event = event_tree->head->data; if(event->time < now) { - event_del(event); + avl_node_t *node = event_tree->head; + avl_unlink_node(event_tree, node); + free(node); return event; } } diff --git a/src/event.h b/src/event.h index f898757..345a5f9 100644 --- a/src/event.h +++ b/src/event.h @@ -1,6 +1,6 @@ /* event.h -- header for event.c - Copyright (C) 2002-2007 Guus Sliepen , + Copyright (C) 2002-2009 Guus Sliepen , 2002-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: event.h 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_EVENT_H__ @@ -38,7 +36,7 @@ typedef struct { extern void init_events(void); extern void exit_events(void); -extern void flush_events(void); +extern void expire_events(void); extern event_t *new_event(void) __attribute__ ((__malloc__)); extern void free_event(event_t *); extern void event_add(event_t *); diff --git a/src/graph.c b/src/graph.c index 222f777..148f23c 100644 --- a/src/graph.c +++ b/src/graph.c @@ -1,6 +1,6 @@ /* graph.c -- graph algorithms - Copyright (C) 2001-2007 Guus Sliepen , + Copyright (C) 2001-2009 Guus Sliepen , 2001-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: graph.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* We need to generate two trees from the graph: @@ -57,6 +55,7 @@ #include "process.h" #include "subnet.h" #include "utils.h" +#include "xalloc.h" static bool graph_changed = true; @@ -65,8 +64,7 @@ static bool graph_changed = true; Please note that sorting on weight is already done by add_edge(). */ -void mst_kruskal(void) -{ +void mst_kruskal(void) { avl_node_t *node, *next; edge_t *e; node_t *n; @@ -75,8 +73,6 @@ void mst_kruskal(void) int safe_edges = 0; bool skipped; - cp(); - /* Clear MST status on connections */ for(node = connection_tree->head; node; node = node->next) { @@ -149,8 +145,7 @@ void mst_kruskal(void) Running time: O(E) */ -void sssp_bfs(void) -{ +void sssp_bfs(void) { avl_node_t *node, *next, *to; edge_t *e; node_t *n; @@ -162,8 +157,6 @@ void sssp_bfs(void) char *envp[7]; int i; - cp(); - todo_list = list_alloc(NULL); /* Clear visited status on nodes */ @@ -226,27 +219,8 @@ void sssp_bfs(void) e->to->via = indirect ? n->via : e->to; e->to->options = e->options; - if(sockaddrcmp(&e->to->address, &e->address)) { - node = avl_unlink(node_udp_tree, e->to); - sockaddrfree(&e->to->address); - sockaddrcpy(&e->to->address, &e->address); - - if(e->to->hostname) - free(e->to->hostname); - - e->to->hostname = sockaddr2hostname(&e->to->address); - - if(node) - avl_insert_node(node_udp_tree, node); - - if(e->to->options & OPTION_PMTU_DISCOVERY) { - e->to->mtuprobes = 0; - e->to->minmtu = 0; - e->to->maxmtu = MTU; - if(e->to->status.validkey) - send_mtu_probe(e->to); - } - } + if(e->to->address.sa.sa_family == AF_UNSPEC && e->address.sa.sa_family != AF_UNKNOWN) + update_node_udp(e->to, &e->address); list_insert_tail(todo_list, e->to); } @@ -267,15 +241,15 @@ void sssp_bfs(void) n->status.reachable = !n->status.reachable; if(n->status.reachable) { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became reachable"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Node %s (%s) became reachable", n->name, n->hostname); - avl_insert(node_udp_tree, n); } else { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became unreachable"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Node %s (%s) became unreachable", n->name, n->hostname); - avl_delete(node_udp_tree, n); } + /* TODO: only clear status.validkey if node is unreachable? */ + n->status.validkey = false; n->status.waitingforkey = false; @@ -283,18 +257,23 @@ void sssp_bfs(void) n->minmtu = 0; n->mtuprobes = 0; - asprintf(&envp[0], "NETNAME=%s", netname ? : ""); - asprintf(&envp[1], "DEVICE=%s", device ? : ""); - asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); - asprintf(&envp[3], "NODE=%s", n->name); + if(n->mtuevent) { + event_del(n->mtuevent); + n->mtuevent = NULL; + } + + xasprintf(&envp[0], "NETNAME=%s", netname ? : ""); + xasprintf(&envp[1], "DEVICE=%s", device ? : ""); + xasprintf(&envp[2], "INTERFACE=%s", iface ? : ""); + xasprintf(&envp[3], "NODE=%s", n->name); sockaddr2str(&n->address, &address, &port); - asprintf(&envp[4], "REMOTEADDRESS=%s", address); - asprintf(&envp[5], "REMOTEPORT=%s", port); + xasprintf(&envp[4], "REMOTEADDRESS=%s", address); + xasprintf(&envp[5], "REMOTEPORT=%s", port); envp[6] = NULL; execute_script(n->status.reachable ? "host-up" : "host-down", envp); - asprintf(&name, + xasprintf(&name, n->status.reachable ? "hosts/%s-up" : "hosts/%s-down", n->name); execute_script(name, envp); @@ -311,8 +290,8 @@ void sssp_bfs(void) } } -void graph(void) -{ +void graph(void) { + subnet_cache_flush(); sssp_bfs(); mst_kruskal(); graph_changed = true; @@ -326,8 +305,7 @@ void graph(void) dot -Tpng graph_filename -o image_filename.png -Gconcentrate=true */ -void dump_graph(void) -{ +void dump_graph(void) { avl_node_t *node; node_t *n; edge_t *e; @@ -344,7 +322,7 @@ void dump_graph(void) if(filename[0] == '|') { file = popen(filename + 1, "w"); } else { - asprintf(&tmpname, "%s.new", filename); + xasprintf(&tmpname, "%s.new", filename); file = fopen(tmpname, "w"); } diff --git a/src/graph.h b/src/graph.h index dad4188..2600601 100644 --- a/src/graph.h +++ b/src/graph.h @@ -13,11 +13,9 @@ 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. - - $Id: graph.h 1463 2006-11-11 14:11:16Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_GRAPH_H__ diff --git a/src/linux/device.c b/src/linux/device.c index dd12b53..35c66d5 100644 --- a/src/linux/device.c +++ b/src/linux/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Linux ethertap and tun/tap device Copyright (C) 2001-2005 Ivo Timmermans, - 2001-2006 Guus Sliepen + 2001-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1488 2006-12-16 16:53:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -34,6 +32,7 @@ #include "net.h" #include "route.h" #include "utils.h" +#include "xalloc.h" typedef enum device_type_t { DEVICE_TYPE_ETHERTAP, @@ -43,33 +42,31 @@ typedef enum device_type_t { int device_fd = -1; static device_type_t device_type; -char *device; -char *iface; -char ifrname[IFNAMSIZ]; -char *device_info; +char *device = NULL; +char *iface = NULL; +static char ifrname[IFNAMSIZ]; +static char *device_info; static int device_total_in = 0; static int device_total_out = 0; -bool setup_device(void) -{ +bool setup_device(void) { struct ifreq ifr; - cp(); - if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - device = DEFAULT_DEVICE; + device = xstrdup(DEFAULT_DEVICE); if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) #ifdef HAVE_LINUX_IF_TUN_H - iface = netname; + if (netname != NULL) + iface = xstrdup(netname); #else - iface = rindex(device, '/') ? rindex(device, '/') + 1 : device; + iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device); #endif device_fd = open(device, O_RDWR | O_NONBLOCK); if(device_fd < 0) { - logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); + logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno)); return false; } @@ -80,11 +77,11 @@ bool setup_device(void) if(routing_mode == RMODE_ROUTER) { ifr.ifr_flags = IFF_TUN; device_type = DEVICE_TYPE_TUN; - device_info = _("Linux tun/tap device (tun mode)"); + device_info = "Linux tun/tap device (tun mode)"; } else { ifr.ifr_flags = IFF_TAP | IFF_NO_PI; device_type = DEVICE_TYPE_TAP; - device_info = _("Linux tun/tap device (tap mode)"); + device_info = "Linux tun/tap device (tap mode)"; } if(iface) @@ -92,45 +89,46 @@ bool setup_device(void) if(!ioctl(device_fd, TUNSETIFF, &ifr)) { strncpy(ifrname, ifr.ifr_name, IFNAMSIZ); - iface = ifrname; + if(iface) free(iface); + iface = xstrdup(ifrname); } else if(!ioctl(device_fd, (('T' << 8) | 202), &ifr)) { - logger(LOG_WARNING, _("Old ioctl() request was needed for %s"), device); + logger(LOG_WARNING, "Old ioctl() request was needed for %s", device); strncpy(ifrname, ifr.ifr_name, IFNAMSIZ); - iface = ifrname; + if(iface) free(iface); + iface = xstrdup(ifrname); } else #endif { if(routing_mode == RMODE_ROUTER) overwrite_mac = true; - device_info = _("Linux ethertap device"); + device_info = "Linux ethertap device"; device_type = DEVICE_TYPE_ETHERTAP; - iface = rindex(device, '/') ? rindex(device, '/') + 1 : device; + if(iface) + free(iface); + iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device); } - logger(LOG_INFO, _("%s is a %s"), device, device_info); + logger(LOG_INFO, "%s is a %s", device, device_info); return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { close(device_fd); + + free(device); + free(iface); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - switch(device_type) { case DEVICE_TYPE_TUN: lenin = read(device_fd, packet->data + 10, MTU - 10); if(lenin <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -141,7 +139,7 @@ bool read_packet(vpn_packet_t *packet) lenin = read(device_fd, packet->data, MTU); if(lenin <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -152,7 +150,7 @@ bool read_packet(vpn_packet_t *packet) lenin = read(device_fd, packet->data - 2, MTU + 2); if(lenin <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -163,31 +161,28 @@ bool read_packet(vpn_packet_t *packet) device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; } -bool write_packet(vpn_packet_t *packet) -{ - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), +bool write_packet(vpn_packet_t *packet) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); switch(device_type) { case DEVICE_TYPE_TUN: packet->data[10] = packet->data[11] = 0; if(write(device_fd, packet->data + 10, packet->len - 10) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } break; case DEVICE_TYPE_TAP: if(write(device_fd, packet->data, packet->len) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -196,7 +191,7 @@ bool write_packet(vpn_packet_t *packet) *(short int *)(packet->data - 2) = packet->len; if(write(device_fd, packet->data - 2, packet->len + 2) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -208,11 +203,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/logger.c b/src/logger.c index 8c36202..a1cc207 100644 --- a/src/logger.c +++ b/src/logger.c @@ -13,11 +13,9 @@ 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. - - $Id: logger.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" diff --git a/src/meta.c b/src/meta.c index 607446d..21400f2 100644 --- a/src/meta.c +++ b/src/meta.c @@ -1,7 +1,8 @@ /* meta.c -- handle the meta communication - Copyright (C) 2000-2006 Guus Sliepen , + Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans + 2006 Scott Lamb 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 @@ -13,11 +14,9 @@ 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. - - $Id: meta.c 1471 2006-11-14 12:28:04Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -34,14 +33,16 @@ #include "utils.h" #include "xalloc.h" -bool send_meta(connection_t *c, const char *buffer, int length) -{ +bool send_meta(connection_t *c, const char *buffer, int length) { int outlen; int result; - cp(); + if(!c) { + logger(LOG_ERR, "send_meta() called with NULL pointer!"); + abort(); + } - ifdebug(META) logger(LOG_DEBUG, _("Sending %d bytes of metadata to %s (%s)"), length, + ifdebug(META) logger(LOG_DEBUG, "Sending %d bytes of metadata to %s (%s)", length, c->name, c->hostname); if(!c->outbuflen) @@ -63,11 +64,11 @@ bool send_meta(connection_t *c, const char *buffer, int length) result = EVP_EncryptUpdate(c->outctx, (unsigned char *)c->outbuf + c->outbufstart + c->outbuflen, &outlen, (unsigned char *)buffer, length); if(!result || outlen < length) { - logger(LOG_ERR, _("Error while encrypting metadata to %s (%s): %s"), + logger(LOG_ERR, "Error while encrypting metadata to %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } else if(outlen > length) { - logger(LOG_EMERG, _("Encrypted data too long! Heap corrupted!")); + logger(LOG_EMERG, "Encrypted data too long! Heap corrupted!"); abort(); } c->outbuflen += outlen; @@ -79,29 +80,28 @@ bool send_meta(connection_t *c, const char *buffer, int length) return true; } -bool flush_meta(connection_t *c) -{ +bool flush_meta(connection_t *c) { int result; - ifdebug(META) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s)"), + ifdebug(META) logger(LOG_DEBUG, "Flushing %d bytes to %s (%s)", c->outbuflen, c->name, c->hostname); while(c->outbuflen) { result = send(c->socket, c->outbuf + c->outbufstart, c->outbuflen, 0); if(result <= 0) { if(!errno || errno == EPIPE) { - ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection closed by %s (%s)"), + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection closed by %s (%s)", c->name, c->hostname); } else if(errno == EINTR) { continue; #ifdef EWOULDBLOCK } else if(errno == EWOULDBLOCK) { - ifdebug(CONNECTIONS) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s) would block"), + ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Flushing %d bytes to %s (%s) would block", c->outbuflen, c->name, c->hostname); return true; #endif } else { - logger(LOG_ERR, _("Flushing meta data to %s (%s) failed: %s"), c->name, + logger(LOG_ERR, "Flushing meta data to %s (%s) failed: %s", c->name, c->hostname, strerror(errno)); } @@ -116,13 +116,10 @@ bool flush_meta(connection_t *c) return true; } -void broadcast_meta(connection_t *from, const char *buffer, int length) -{ +void broadcast_meta(connection_t *from, const char *buffer, int length) { avl_node_t *node; connection_t *c; - cp(); - for(node = connection_tree->head; node; node = node->next) { c = node->data; @@ -131,15 +128,12 @@ void broadcast_meta(connection_t *from, const char *buffer, int length) } } -bool receive_meta(connection_t *c) -{ +bool receive_meta(connection_t *c) { int oldlen, i, result; int lenin, lenout, reqlen; bool decrypted = false; char inbuf[MAXBUFSIZE]; - cp(); - /* Strategy: - Read as much as possible from the TCP socket in one go. - Decrypt it. @@ -153,12 +147,12 @@ bool receive_meta(connection_t *c) if(lenin <= 0) { if(!lenin || !errno) { - ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection closed by %s (%s)"), + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection closed by %s (%s)", c->name, c->hostname); } else if(errno == EINTR) return true; else - logger(LOG_ERR, _("Metadata socket read error for %s (%s): %s"), + logger(LOG_ERR, "Metadata socket read error for %s (%s): %s", c->name, c->hostname, strerror(errno)); return false; @@ -173,7 +167,7 @@ bool receive_meta(connection_t *c) if(c->status.decryptin && !decrypted) { result = EVP_DecryptUpdate(c->inctx, (unsigned char *)inbuf, &lenout, (unsigned char *)c->buffer + oldlen, lenin); if(!result || lenout != lenin) { - logger(LOG_ERR, _("Error while decrypting metadata from %s (%s): %s"), + logger(LOG_ERR, "Error while decrypting metadata from %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } @@ -226,12 +220,10 @@ bool receive_meta(connection_t *c) } if(c->buflen >= MAXBUFSIZE) { - logger(LOG_ERR, _("Metadata read buffer overflow for %s (%s)"), + logger(LOG_ERR, "Metadata read buffer overflow for %s (%s)", c->name, c->hostname); return false; } - c->last_ping_time = now; - return true; } diff --git a/src/meta.h b/src/meta.h index a9cbf02..fcb09fc 100644 --- a/src/meta.h +++ b/src/meta.h @@ -13,11 +13,9 @@ 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. - - $Id: meta.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_META_H__ diff --git a/src/mingw/common.h b/src/mingw/common.h index 39a8349..6e5e75c 100644 --- a/src/mingw/common.h +++ b/src/mingw/common.h @@ -21,10 +21,9 @@ * 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 (see the file COPYING included with this - * distribution); if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ //=============================================== diff --git a/src/mingw/device.c b/src/mingw/device.c index a9ff955..c0f5d29 100644 --- a/src/mingw/device.c +++ b/src/mingw/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Windows tap driver in a MinGW environment Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2007 Guus Sliepen + 2002-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1510 2007-05-16 14:46:25Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -34,74 +32,35 @@ #include "mingw/common.h" -int device_fd = 0; +int device_fd = -1; static HANDLE device_handle = INVALID_HANDLE_VALUE; char *device = NULL; char *iface = NULL; -char *device_info = NULL; +static char *device_info = NULL; static int device_total_in = 0; static int device_total_out = 0; extern char *myport; -static struct packetbuf { - uint8_t data[MTU]; - length_t len; -} *bufs; - -static int nbufs = 64; - -DWORD WINAPI tapreader(void *bla) { - int sock, err, status; - struct addrinfo *ai; - struct addrinfo hint = { - .ai_family = AF_UNSPEC, - .ai_socktype = SOCK_STREAM, - .ai_protocol = IPPROTO_TCP, - .ai_flags = 0, - }; - unsigned char bufno = 0; +static DWORD WINAPI tapreader(void *bla) { + int status; long len; OVERLAPPED overlapped; + vpn_packet_t packet; - /* Open a socket to the parent process */ - - err = getaddrinfo(NULL, myport, &hint, &ai); - - if(err || !ai) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", gai_strerror(errno)); - return -1; - } - - sock = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); - - if(sock < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "socket", strerror(errno)); - freeaddrinfo(ai); - return -1; - } - - if(connect(sock, ai->ai_addr, ai->ai_addrlen)) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "connect", strerror(errno)); - freeaddrinfo(ai); - return -1; - } - - freeaddrinfo(ai); - - logger(LOG_DEBUG, _("Tap reader running")); + logger(LOG_DEBUG, "Tap reader running"); /* Read from tap device and send to parent */ overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - + for(;;) { overlapped.Offset = 0; overlapped.OffsetHigh = 0; ResetEvent(overlapped.hEvent); - status = ReadFile(device_handle, bufs[bufno].data, MTU, &len, &overlapped); + status = ReadFile(device_handle, packet.data, MTU, &len, &overlapped); if(!status) { if(GetLastError() == ERROR_IO_PENDING) { @@ -109,22 +68,21 @@ DWORD WINAPI tapreader(void *bla) { if(!GetOverlappedResult(device_handle, &overlapped, &len, FALSE)) continue; } else { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return -1; } } - bufs[bufno].len = len; - if(send(sock, &bufno, 1, 0) <= 0) - return -1; - if(++bufno >= nbufs) - bufno = 0; + EnterCriticalSection(&mutex); + packet.len = len; + packet.priority = 0; + route(myself, &packet); + LeaveCriticalSection(&mutex); } } -bool setup_device(void) -{ +bool setup_device(void) { HKEY key, key2; int i; @@ -148,15 +106,13 @@ bool setup_device(void) .ai_flags = 0, }; - cp(); - get_config_string(lookup_config(config_tree, "Device"), &device); get_config_string(lookup_config(config_tree, "Interface"), &iface); /* Open registry and look for network adapters */ if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) { - logger(LOG_ERR, _("Unable to read registry: %s"), winerror(GetLastError())); + logger(LOG_ERR, "Unable to read registry: %s", winerror(GetLastError())); return false; } @@ -207,7 +163,7 @@ bool setup_device(void) RegCloseKey(key); if(!found) { - logger(LOG_ERR, _("No Windows tap device found!")); + logger(LOG_ERR, "No Windows tap device found!"); return false; } @@ -225,14 +181,14 @@ bool setup_device(void) } if(device_handle == INVALID_HANDLE_VALUE) { - logger(LOG_ERR, _("%s (%s) is not a usable Windows tap device: %s"), device, iface, winerror(GetLastError())); + logger(LOG_ERR, "%s (%s) is not a usable Windows tap device: %s", device, iface, winerror(GetLastError())); return false; } /* Get MAC address from tap device */ if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) { - logger(LOG_ERR, _("Could not get MAC address from Windows tap device %s (%s): %s"), device, iface, winerror(GetLastError())); + logger(LOG_ERR, "Could not get MAC address from Windows tap device %s (%s): %s", device, iface, winerror(GetLastError())); return false; } @@ -240,116 +196,47 @@ bool setup_device(void) overwrite_mac = 1; } - /* Set up ringbuffer */ - - get_config_int(lookup_config(config_tree, "RingBufferSize"), &nbufs); - if(nbufs <= 1) - nbufs = 1; - else if(nbufs > 256) - nbufs = 256; - - bufs = xmalloc_and_zero(nbufs * sizeof *bufs); - - /* Create a listening socket */ - - err = getaddrinfo(NULL, myport, &hint, &ai); - - if(err || !ai) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", gai_strerror(errno)); - return false; - } - - sock = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); - - if(sock < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "socket", strerror(errno)); - return false; - } - - if(bind(sock, ai->ai_addr, ai->ai_addrlen)) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "bind", strerror(errno)); - return false; - } - - freeaddrinfo(ai); - - if(listen(sock, 1)) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "listen", strerror(errno)); - return false; - } - /* Start the tap reader */ thread = CreateThread(NULL, 0, tapreader, NULL, 0, NULL); if(!thread) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "CreateThread", winerror(GetLastError())); + logger(LOG_ERR, "System call `%s' failed: %s", "CreateThread", winerror(GetLastError())); return false; } - /* Wait for the tap reader to connect back to us */ - - if((device_fd = accept(sock, NULL, 0)) == -1) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "accept", strerror(errno)); - return false; - } - - closesocket(sock); - /* Set media status for newer TAP-Win32 devices */ status = true; DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof(status), &status, sizeof(status), &len, NULL); - device_info = _("Windows tap device"); + device_info = "Windows tap device"; - logger(LOG_INFO, _("%s (%s) is a %s"), device, iface, device_info); + logger(LOG_INFO, "%s (%s) is a %s", device, iface, device_info); return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { CloseHandle(device_handle); + + free(device); + free(iface); } -bool read_packet(vpn_packet_t *packet) -{ - unsigned char bufno; - - cp(); - - if((recv(device_fd, &bufno, 1, 0)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, - device, strerror(errno)); - return false; - } - - packet->len = bufs[bufno].len; - memcpy(packet->data, bufs[bufno].data, bufs[bufno].len); - - device_total_in += packet->len; - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, - device_info); - - return true; +bool read_packet(vpn_packet_t *packet) { + return false; } -bool write_packet(vpn_packet_t *packet) -{ +bool write_packet(vpn_packet_t *packet) { long lenout; OVERLAPPED overlapped = {0}; - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); if(!WriteFile(device_handle, packet->data, packet->len, &lenout, &overlapped)) { - logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, device, winerror(GetLastError())); + logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, winerror(GetLastError())); return false; } @@ -358,11 +245,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/net.c b/src/net.c index 5816e43..3197036 100644 --- a/src/net.c +++ b/src/net.c @@ -1,7 +1,8 @@ /* net.c -- most of the network code Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2007 Guus Sliepen + 2000-2009 Guus Sliepen + 2006 Scott Lamb 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 @@ -13,11 +14,9 @@ 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. - - $Id: net.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -48,16 +47,13 @@ time_t now = 0; /* Purge edges and subnets of unreachable nodes. Use carefully. */ -static void purge(void) -{ +static void purge(void) { avl_node_t *nnode, *nnext, *enode, *enext, *snode, *snext; node_t *n; edge_t *e; subnet_t *s; - cp(); - - ifdebug(PROTOCOL) logger(LOG_DEBUG, _("Purging unreachable nodes")); + ifdebug(PROTOCOL) logger(LOG_DEBUG, "Purging unreachable nodes"); /* Remove all edges and subnets owned by unreachable nodes. */ @@ -66,7 +62,7 @@ static void purge(void) n = nnode->data; if(!n->status.reachable) { - ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Purging node %s (%s)"), n->name, + ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Purging node %s (%s)", n->name, n->hostname); for(snode = n->subnet_tree->head; snode; snode = snext) { @@ -112,14 +108,11 @@ static void purge(void) put all file descriptors in an fd_set array While we're at it, purge stuff that needs to be removed. */ -static int build_fdset(fd_set *readset, fd_set *writeset) -{ +static int build_fdset(fd_set *readset, fd_set *writeset) { avl_node_t *node, *next; connection_t *c; int i, max = 0; - cp(); - FD_ZERO(readset); FD_ZERO(writeset); @@ -149,7 +142,8 @@ static int build_fdset(fd_set *readset, fd_set *writeset) max = listen_socket[i].udp; } - FD_SET(device_fd, readset); + if(device_fd >= 0) + FD_SET(device_fd, readset); if(device_fd > max) max = device_fd; @@ -163,14 +157,11 @@ static int build_fdset(fd_set *readset, fd_set *writeset) - Check if we need to retry making an outgoing connection - Deactivate the host */ -void terminate_connection(connection_t *c, bool report) -{ - cp(); - +void terminate_connection(connection_t *c, bool report) { if(c->status.remove) return; - ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Closing connection with %s (%s)"), + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Closing connection with %s (%s)", c->name, c->hostname); c->status.remove = true; @@ -227,13 +218,10 @@ void terminate_connection(connection_t *c, bool report) end does not reply in time, we consider them dead and close the connection. */ -static void check_dead_connections(void) -{ +static void check_dead_connections(void) { avl_node_t *node, *next; connection_t *c; - cp(); - for(node = connection_tree->head; node; node = next) { next = node->next; c = node->data; @@ -241,7 +229,7 @@ static void check_dead_connections(void) if(c->last_ping_time + pingtimeout < now) { if(c->status.active) { if(c->status.pinged) { - ifdebug(CONNECTIONS) logger(LOG_INFO, _("%s (%s) didn't respond to PING in %ld seconds"), + ifdebug(CONNECTIONS) logger(LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds", c->name, c->hostname, now - c->last_ping_time); c->status.timeout = true; terminate_connection(c, true); @@ -250,12 +238,12 @@ static void check_dead_connections(void) } } else { if(c->status.remove) { - logger(LOG_WARNING, _("Old connection_t for %s (%s) status %04x still lingering, deleting..."), - c->name, c->hostname, c->status.value); + logger(LOG_WARNING, "Old connection_t for %s (%s) status %04x still lingering, deleting...", + c->name, c->hostname, bitfield_to_int(&c->status, sizeof c->status)); connection_del(c); continue; } - ifdebug(CONNECTIONS) logger(LOG_WARNING, _("Timeout from %s (%s) during authentication"), + ifdebug(CONNECTIONS) logger(LOG_WARNING, "Timeout from %s (%s) during authentication", c->name, c->hostname); if(c->status.connecting) { c->status.connecting = false; @@ -270,7 +258,7 @@ static void check_dead_connections(void) if(c->outbuflen > 0 && c->last_flushed_time + pingtimeout < now) { if(c->status.active) { ifdebug(CONNECTIONS) logger(LOG_INFO, - _("%s (%s) could not flush for %ld seconds (%d bytes remaining)"), + "%s (%s) could not flush for %ld seconds (%d bytes remaining)", c->name, c->hostname, now - c->last_flushed_time, c->outbuflen); c->status.timeout = true; terminate_connection(c, true); @@ -283,20 +271,19 @@ static void check_dead_connections(void) check all connections to see if anything happened on their sockets */ -static void check_network_activity(fd_set * readset, fd_set * writeset) -{ +static void check_network_activity(fd_set * readset, fd_set * writeset) { connection_t *c; avl_node_t *node; int result, i; socklen_t len = sizeof(result); vpn_packet_t packet; - cp(); - /* check input from kernel */ - if(FD_ISSET(device_fd, readset)) { - if(read_packet(&packet)) + if(device_fd >= 0 && FD_ISSET(device_fd, readset)) { + if(read_packet(&packet)) { + packet.priority = 0; route(myself, &packet); + } } /* check meta connections */ @@ -315,7 +302,7 @@ static void check_network_activity(fd_set * readset, fd_set * writeset) finish_connecting(c); else { ifdebug(CONNECTIONS) logger(LOG_DEBUG, - _("Error while connecting to %s (%s): %s"), + "Error while connecting to %s (%s): %s", c->name, c->hostname, strerror(result)); closesocket(c->socket); do_outgoing_connection(c); @@ -349,16 +336,13 @@ static void check_network_activity(fd_set * readset, fd_set * writeset) /* this is where it all happens... */ -int main_loop(void) -{ +int main_loop(void) { fd_set readset, writeset; struct timeval tv; int r, maxfd; time_t last_ping_check, last_config_check, last_graph_dump; event_t *event; - cp(); - last_ping_check = now; last_config_check = now; last_graph_dump = now; @@ -376,13 +360,18 @@ int main_loop(void) maxfd = build_fdset(&readset, &writeset); +#ifdef HAVE_MINGW + LeaveCriticalSection(&mutex); +#endif r = select(maxfd + 1, &readset, &writeset, NULL, &tv); +#ifdef HAVE_MINGW + EnterCriticalSection(&mutex); +#endif if(r < 0) { if(errno != EINTR && errno != EAGAIN) { - logger(LOG_ERR, _("Error while waiting for input: %s"), + logger(LOG_ERR, "Error while waiting for input: %s", strerror(errno)); - cp_trace(); dump_connections(); return 1; } @@ -411,28 +400,35 @@ int main_loop(void) /* Should we regenerate our key? */ if(keyexpires < now) { - ifdebug(STATUS) logger(LOG_INFO, _("Regenerating symmetric key")); + avl_node_t *node; + node_t *n; + + ifdebug(STATUS) logger(LOG_INFO, "Expiring symmetric keys"); + + for(node = node_tree->head; node; node = node->next) { + n = node->data; + if(n->inkey) { + free(n->inkey); + n->inkey = NULL; + } + } - RAND_pseudo_bytes((unsigned char *)myself->key, myself->keylength); - if(myself->cipher) - EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, (unsigned char *)myself->key, (unsigned char *)myself->key + myself->cipher->key_len); send_key_changed(broadcast, myself); keyexpires = now + keylifetime; } } + if(sigalrm) { + logger(LOG_INFO, "Flushing event queue"); + expire_events(); + sigalrm = false; + } while((event = get_expired_event())) { event->handler(event->data); free_event(event); } - if(sigalrm) { - logger(LOG_INFO, _("Flushing event queue")); - flush_events(); - sigalrm = false; - } - if(sighup) { connection_t *c; avl_node_t *node; @@ -447,7 +443,7 @@ int main_loop(void) init_configuration(&config_tree); if(!read_server_config()) { - logger(LOG_ERR, _("Unable to reread configuration file, exitting.")); + logger(LOG_ERR, "Unable to reread configuration file, exitting."); return 1; } @@ -456,15 +452,7 @@ int main_loop(void) for(node = connection_tree->head; node; node = node->next) { c = node->data; - if(c->outgoing) { - free(c->outgoing->name); - if(c->outgoing->ai) - freeaddrinfo(c->outgoing->ai); - free(c->outgoing); - c->outgoing = NULL; - } - - asprintf(&fname, "%s/hosts/%s", confbase, c->name); + xasprintf(&fname, "%s/hosts/%s", confbase, c->name); if(stat(fname, &s) || s.st_mtime > last_config_check) terminate_connection(c, c->status.active); free(fname); diff --git a/src/net.h b/src/net.h index b8b7f59..31438e5 100644 --- a/src/net.h +++ b/src/net.h @@ -1,7 +1,7 @@ /* net.h -- header for net.c - Copyright (C) 1998-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + Copyright (C) 1998-2005 Ivo Timmermans + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: net.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_NET_H__ @@ -38,8 +36,6 @@ #define MAXSOCKETS 128 /* Overkill... */ -#define MAXQUEUELENGTH 8 /* Maximum number of packats in a single queue */ - typedef struct mac_t { uint8_t x[6]; } mac_t; @@ -87,17 +83,6 @@ typedef struct vpn_packet_t { uint8_t data[MAXSIZE]; } vpn_packet_t; -typedef struct queue_element_t { - void *packet; - struct queue_element_t *prev; - struct queue_element_t *next; -} queue_element_t; - -typedef struct packet_queue_t { - queue_element_t *head; - queue_element_t *tail; -} packet_queue_t; - typedef struct listen_socket_t { int tcp; int udp; @@ -105,6 +90,7 @@ typedef struct listen_socket_t { } listen_socket_t; #include "conf.h" +#include "list.h" typedef struct outgoing_t { char *name; @@ -114,6 +100,8 @@ typedef struct outgoing_t { struct addrinfo *aip; } outgoing_t; +extern list_t *outgoing_list; + extern int maxoutbufsize; extern int seconds_till_retry; extern int addressfamily; @@ -126,7 +114,6 @@ extern bool do_prune; extern bool do_purge; extern char *myport; extern time_t now; -extern EVP_CIPHER_CTX packet_ctx; /* Yes, very strange placement indeed, but otherwise the typedefs get all tangled up */ #include "connection.h" @@ -142,7 +129,7 @@ extern int setup_vpn_in_socket(const sockaddr_t *); extern void send_packet(const struct node_t *, vpn_packet_t *); extern void receive_tcppacket(struct connection_t *, char *, int); extern void broadcast_packet(const struct node_t *, vpn_packet_t *); -extern bool setup_network_connections(void); +extern bool setup_network(void); extern void setup_outgoing_connection(struct outgoing_t *); extern void try_outgoing_connections(void); extern void close_network_connections(void); @@ -154,6 +141,8 @@ extern void send_mtu_probe(struct node_t *); #ifndef HAVE_MINGW #define closesocket(s) close(s) +#else +extern CRITICAL_SECTION mutex; #endif #endif /* __TINC_NET_H__ */ diff --git a/src/net_packet.c b/src/net_packet.c index c2e40d0..7a73ef5 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -1,7 +1,7 @@ /* net_packet.c -- Handles in- and outgoing VPN packets Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: net_packet.c 1474 2006-11-29 17:18:39Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -54,69 +52,101 @@ int keylifetime = 0; int keyexpires = 0; -EVP_CIPHER_CTX packet_ctx; static char lzo_wrkmem[LZO1X_999_MEM_COMPRESS > LZO1X_1_MEM_COMPRESS ? LZO1X_999_MEM_COMPRESS : LZO1X_1_MEM_COMPRESS]; static void send_udppacket(node_t *, vpn_packet_t *); #define MAX_SEQNO 1073741824 -void send_mtu_probe(node_t *n) -{ +// mtuprobes == 1..30: initial discovery, send bursts with 1 second interval +// mtuprobes == 31: sleep pinginterval seconds +// mtuprobes == 32: send 1 burst, sleep pingtimeout second +// mtuprobes == 33: no response from other side, restart PMTU discovery process + +void send_mtu_probe(node_t *n) { vpn_packet_t packet; int len, i; + int timeout = 1; - cp(); - n->mtuprobes++; n->mtuevent = NULL; - if(n->mtuprobes >= 10 && !n->minmtu) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("No response to MTU probes from %s (%s)"), n->name, n->hostname); + if(!n->status.reachable || !n->status.validkey) { + logger(LOG_DEBUG, "Trying to send MTU probe to unreachable node %s (%s)", n->name, n->hostname); + n->mtuprobes = 0; return; } - for(i = 0; i < 3; i++) { - if(n->mtuprobes >= 30 || n->minmtu >= n->maxmtu) { - n->mtu = n->minmtu; - ifdebug(TRAFFIC) logger(LOG_INFO, _("Fixing MTU of %s (%s) to %d after %d probes"), n->name, n->hostname, n->mtu, n->mtuprobes); - return; - } + if(n->mtuprobes > 32) { + ifdebug(TRAFFIC) logger(LOG_INFO, "%s (%s) did not respond to UDP ping, restarting PMTU discovery", n->name, n->hostname); + n->mtuprobes = 1; + n->minmtu = 0; + n->maxmtu = MTU; + } + + if(n->mtuprobes >= 10 && !n->minmtu) { + ifdebug(TRAFFIC) logger(LOG_INFO, "No response to MTU probes from %s (%s)", n->name, n->hostname); + n->mtuprobes = 0; + return; + } + + if(n->mtuprobes == 30 || (n->mtuprobes < 30 && n->minmtu >= n->maxmtu)) { + n->mtu = n->minmtu; + ifdebug(TRAFFIC) logger(LOG_INFO, "Fixing MTU of %s (%s) to %d after %d probes", n->name, n->hostname, n->mtu, n->mtuprobes); + n->mtuprobes = 31; + } + + if(n->mtuprobes == 31) { + timeout = pinginterval; + goto end; + } else if(n->mtuprobes == 32) { + timeout = pingtimeout; + } + + for(i = 0; i < 3; i++) { + if(n->maxmtu <= n->minmtu) + len = n->maxmtu; + else + len = n->minmtu + 1 + rand() % (n->maxmtu - n->minmtu); - len = n->minmtu + 1 + random() % (n->maxmtu - n->minmtu); if(len < 64) len = 64; memset(packet.data, 0, 14); RAND_pseudo_bytes(packet.data + 14, len - 14); packet.len = len; + packet.priority = 0; - ifdebug(TRAFFIC) logger(LOG_INFO, _("Sending MTU probe length %d to %s (%s)"), len, n->name, n->hostname); + ifdebug(TRAFFIC) logger(LOG_INFO, "Sending MTU probe length %d to %s (%s)", len, n->name, n->hostname); send_udppacket(n, &packet); } +end: n->mtuevent = new_event(); n->mtuevent->handler = (event_handler_t)send_mtu_probe; n->mtuevent->data = n; - n->mtuevent->time = now + 1; + n->mtuevent->time = now + timeout; event_add(n->mtuevent); } -void mtu_probe_h(node_t *n, vpn_packet_t *packet) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("Got MTU probe length %d from %s (%s)"), packet->len, n->name, n->hostname); +void mtu_probe_h(node_t *n, vpn_packet_t *packet, length_t len) { + ifdebug(TRAFFIC) logger(LOG_INFO, "Got MTU probe length %d from %s (%s)", packet->len, n->name, n->hostname); if(!packet->data[0]) { packet->data[0] = 1; send_packet(n, packet); } else { - if(n->minmtu < packet->len) - n->minmtu = packet->len; + if(len > n->maxmtu) + len = n->maxmtu; + if(n->minmtu < len) + n->minmtu = len; + if(n->mtuprobes > 30) + n->mtuprobes = 30; } } -static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) -{ +static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) { if(level == 10) { lzo_uint lzolen = MAXSIZE; lzo1x_1_compress(source, len, dest, &lzolen, lzo_wrkmem); @@ -136,8 +166,7 @@ static length_t compress_packet(uint8_t *dest, const uint8_t *source, length_t l return -1; } -static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) -{ +static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t len, int level) { if(level > 9) { lzo_uint lzolen = MAXSIZE; if(lzo1x_decompress_safe(source, len, dest, &lzolen, NULL) == LZO_E_OK) @@ -157,18 +186,25 @@ static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t /* VPN packet I/O */ -static void receive_packet(node_t *n, vpn_packet_t *packet) -{ - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Received packet of %d bytes from %s (%s)"), +static void receive_packet(node_t *n, vpn_packet_t *packet) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Received packet of %d bytes from %s (%s)", packet->len, n->name, n->hostname); route(n, packet); } -static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) -{ +static bool try_mac(const node_t *n, const vpn_packet_t *inpkt) { + unsigned char hmac[EVP_MAX_MD_SIZE]; + + if(!n->indigest || !n->inmaclength || !n->inkey || inpkt->len < sizeof inpkt->seqno + n->inmaclength) + return false; + + HMAC(n->indigest, n->inkey, n->inkeylength, (unsigned char *) &inpkt->seqno, inpkt->len - n->inmaclength, (unsigned char *)hmac, NULL); + + return !memcmp(hmac, (char *) &inpkt->seqno + inpkt->len - n->inmaclength, n->inmaclength); +} + +static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) { vpn_packet_t pkt1, pkt2; vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 }; int nextpkt = 0; @@ -177,25 +213,29 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) unsigned char hmac[EVP_MAX_MD_SIZE]; int i; - cp(); + if(!n->inkey) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got packet from %s (%s) but he hasn't got our key yet", + n->name, n->hostname); + return; + } /* Check packet length */ - if(inpkt->len < sizeof(inpkt->seqno) + myself->maclength) { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got too short packet from %s (%s)"), + if(inpkt->len < sizeof(inpkt->seqno) + n->inmaclength) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got too short packet from %s (%s)", n->name, n->hostname); return; } /* Check the message authentication code */ - if(myself->digest && myself->maclength) { - inpkt->len -= myself->maclength; - HMAC(myself->digest, myself->key, myself->keylength, + if(n->indigest && n->inmaclength) { + inpkt->len -= n->inmaclength; + HMAC(n->indigest, n->inkey, n->inkeylength, (unsigned char *) &inpkt->seqno, inpkt->len, (unsigned char *)hmac, NULL); - if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, myself->maclength)) { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got unauthenticated packet from %s (%s)"), + if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, n->inmaclength)) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got unauthenticated packet from %s (%s)", n->name, n->hostname); return; } @@ -203,14 +243,14 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) /* Decrypt the packet */ - if(myself->cipher) { + if(n->incipher) { outpkt = pkt[nextpkt++]; - if(!EVP_DecryptInit_ex(&packet_ctx, NULL, NULL, NULL, NULL) - || !EVP_DecryptUpdate(&packet_ctx, (unsigned char *) &outpkt->seqno, &outlen, + if(!EVP_DecryptInit_ex(&n->inctx, NULL, NULL, NULL, NULL) + || !EVP_DecryptUpdate(&n->inctx, (unsigned char *) &outpkt->seqno, &outlen, (unsigned char *) &inpkt->seqno, inpkt->len) - || !EVP_DecryptFinal_ex(&packet_ctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Error decrypting packet from %s (%s): %s"), + || !EVP_DecryptFinal_ex(&n->inctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Error decrypting packet from %s (%s): %s", n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL)); return; } @@ -226,13 +266,13 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) if(inpkt->seqno != n->received_seqno + 1) { if(inpkt->seqno >= n->received_seqno + sizeof(n->late) * 8) { - logger(LOG_WARNING, _("Lost %d packets from %s (%s)"), + logger(LOG_WARNING, "Lost %d packets from %s (%s)", inpkt->seqno - n->received_seqno - 1, n->name, n->hostname); memset(n->late, 0, sizeof(n->late)); } else if (inpkt->seqno <= n->received_seqno) { if((n->received_seqno >= sizeof(n->late) * 8 && inpkt->seqno <= n->received_seqno - sizeof(n->late) * 8) || !(n->late[(inpkt->seqno / 8) % sizeof(n->late)] & (1 << inpkt->seqno % 8))) { - logger(LOG_WARNING, _("Got late or replayed packet from %s (%s), seqno %d, last received %d"), + logger(LOG_WARNING, "Got late or replayed packet from %s (%s), seqno %d, last received %d", n->name, n->hostname, inpkt->seqno, n->received_seqno); return; } @@ -252,41 +292,44 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) /* Decompress the packet */ - if(myself->compression) { + length_t origlen = inpkt->len; + + if(n->incompression) { outpkt = pkt[nextpkt++]; - if((outpkt->len = uncompress_packet(outpkt->data, inpkt->data, inpkt->len, myself->compression)) < 0) { - ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while uncompressing packet from %s (%s)"), + if((outpkt->len = uncompress_packet(outpkt->data, inpkt->data, inpkt->len, n->incompression)) < 0) { + ifdebug(TRAFFIC) logger(LOG_ERR, "Error while uncompressing packet from %s (%s)", n->name, n->hostname); return; } inpkt = outpkt; + + origlen -= MTU/64 + 20; } - if(n->connection) - n->connection->last_ping_time = now; + inpkt->priority = 0; if(!inpkt->data[12] && !inpkt->data[13]) - mtu_probe_h(n, inpkt); + mtu_probe_h(n, inpkt, origlen); else receive_packet(n, inpkt); } -void receive_tcppacket(connection_t *c, char *buffer, int len) -{ +void receive_tcppacket(connection_t *c, char *buffer, int len) { vpn_packet_t outpkt; - cp(); - outpkt.len = len; + if(c->options & OPTION_TCPONLY) + outpkt.priority = 0; + else + outpkt.priority = -1; memcpy(outpkt.data, buffer, len); receive_packet(c->node, &outpkt); } -static void send_udppacket(node_t *n, vpn_packet_t *origpkt) -{ +static void send_udppacket(node_t *n, vpn_packet_t *origpkt) { vpn_packet_t pkt1, pkt2; vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 }; vpn_packet_t *inpkt = origpkt; @@ -294,34 +337,39 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) vpn_packet_t *outpkt; int origlen; int outlen, outpad; - vpn_packet_t *copy; static int priority = 0; int origpriority; int sock; - cp(); + if(!n->status.reachable) { + ifdebug(TRAFFIC) logger(LOG_INFO, "Trying to send UDP packet to unreachable node %s (%s)", n->name, n->hostname); + return; + } /* Make sure we have a valid key */ if(!n->status.validkey) { ifdebug(TRAFFIC) logger(LOG_INFO, - _("No valid key known yet for %s (%s), queueing packet"), + "No valid key known yet for %s (%s), forwarding via TCP", n->name, n->hostname); - /* Since packet is on the stack of handle_tap_input(), we have to make a copy of it first. */ - - *(copy = xmalloc(sizeof(*copy))) = *inpkt; - - list_insert_tail(n->queue, copy); - - if(n->queue->count > MAXQUEUELENGTH) - list_delete_head(n->queue); - if(!n->status.waitingforkey) - send_req_key(n->nexthop->connection, myself, n); + send_req_key(n); n->status.waitingforkey = true; + send_tcppacket(n->nexthop->connection, origpkt); + + return; + } + + if(n->options & OPTION_PMTU_DISCOVERY && inpkt->len > n->minmtu && (inpkt->data[12] | inpkt->data[13])) { + ifdebug(TRAFFIC) logger(LOG_INFO, + "Packet for %s (%s) larger than minimum MTU, forwarding via TCP", + n->name, n->hostname); + + send_tcppacket(n->nexthop->connection, origpkt); + return; } @@ -330,11 +378,11 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) /* Compress the packet */ - if(n->compression) { + if(n->outcompression) { outpkt = pkt[nextpkt++]; - if((outpkt->len = compress_packet(outpkt->data, inpkt->data, inpkt->len, n->compression)) < 0) { - ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while compressing packet to %s (%s)"), + if((outpkt->len = compress_packet(outpkt->data, inpkt->data, inpkt->len, n->outcompression)) < 0) { + ifdebug(TRAFFIC) logger(LOG_ERR, "Error while compressing packet to %s (%s)", n->name, n->hostname); return; } @@ -349,14 +397,14 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) /* Encrypt the packet */ - if(n->cipher) { + if(n->outcipher) { outpkt = pkt[nextpkt++]; - if(!EVP_EncryptInit_ex(&n->packet_ctx, NULL, NULL, NULL, NULL) - || !EVP_EncryptUpdate(&n->packet_ctx, (unsigned char *) &outpkt->seqno, &outlen, + if(!EVP_EncryptInit_ex(&n->outctx, NULL, NULL, NULL, NULL) + || !EVP_EncryptUpdate(&n->outctx, (unsigned char *) &outpkt->seqno, &outlen, (unsigned char *) &inpkt->seqno, inpkt->len) - || !EVP_EncryptFinal_ex(&n->packet_ctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { - ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while encrypting packet to %s (%s): %s"), + || !EVP_EncryptFinal_ex(&n->outctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { + ifdebug(TRAFFIC) logger(LOG_ERR, "Error while encrypting packet to %s (%s): %s", n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL)); goto end; } @@ -367,10 +415,10 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) /* Add the message authentication code */ - if(n->digest && n->maclength) { - HMAC(n->digest, n->key, n->keylength, (unsigned char *) &inpkt->seqno, + if(n->outdigest && n->outmaclength) { + HMAC(n->outdigest, n->outkey, n->outkeylength, (unsigned char *) &inpkt->seqno, inpkt->len, (unsigned char *) &inpkt->seqno + inpkt->len, NULL); - inpkt->len += n->maclength; + inpkt->len += n->outmaclength; } /* Determine which socket we have to use */ @@ -388,9 +436,9 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) if(priorityinheritance && origpriority != priority && listen_socket[sock].sa.sa.sa_family == AF_INET) { priority = origpriority; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Setting outgoing packet priority to %d"), priority); + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Setting outgoing packet priority to %d", priority); if(setsockopt(listen_socket[sock].udp, SOL_IP, IP_TOS, &priority, sizeof(priority))) /* SO_PRIORITY doesn't seem to work */ - logger(LOG_ERR, _("System call `%s' failed: %s"), "setsockopt", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "setsockopt", strerror(errno)); } #endif @@ -401,7 +449,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) if(n->mtu >= origlen) n->mtu = origlen - 1; } else - logger(LOG_ERR, _("Error sending packet to %s (%s): %s"), n->name, n->hostname, strerror(errno)); + logger(LOG_ERR, "Error sending packet to %s (%s): %s", n->name, n->hostname, strerror(errno)); } end: @@ -411,12 +459,9 @@ end: /* send a packet to the given vpn ip. */ -void send_packet(const node_t *n, vpn_packet_t *packet) -{ +void send_packet(const node_t *n, vpn_packet_t *packet) { node_t *via; - cp(); - if(n == myself) { if(overwrite_mac) memcpy(packet->data, mymac.x, ETH_ALEN); @@ -424,22 +469,22 @@ void send_packet(const node_t *n, vpn_packet_t *packet) return; } - ifdebug(TRAFFIC) logger(LOG_ERR, _("Sending packet of %d bytes to %s (%s)"), + ifdebug(TRAFFIC) logger(LOG_ERR, "Sending packet of %d bytes to %s (%s)", packet->len, n->name, n->hostname); if(!n->status.reachable) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("Node %s (%s) is not reachable"), + ifdebug(TRAFFIC) logger(LOG_INFO, "Node %s (%s) is not reachable", n->name, n->hostname); return; } - via = (n->via == myself) ? n->nexthop : n->via; + via = (packet->priority == -1 || n->via == myself) ? n->nexthop : n->via; if(via != n) - ifdebug(TRAFFIC) logger(LOG_ERR, _("Sending packet to %s via %s (%s)"), + ifdebug(TRAFFIC) logger(LOG_INFO, "Sending packet to %s via %s (%s)", n->name, via->name, n->via->hostname); - if((myself->options | via->options) & OPTION_TCPONLY) { + if(packet->priority == -1 || ((myself->options | via->options) & OPTION_TCPONLY)) { if(!send_tcppacket(via->connection, packet)) terminate_connection(via->connection, true); } else @@ -448,19 +493,22 @@ void send_packet(const node_t *n, vpn_packet_t *packet) /* Broadcast a packet using the minimum spanning tree */ -void broadcast_packet(const node_t *from, vpn_packet_t *packet) -{ +void broadcast_packet(const node_t *from, vpn_packet_t *packet) { avl_node_t *node; connection_t *c; - cp(); - - ifdebug(TRAFFIC) logger(LOG_INFO, _("Broadcasting packet of %d bytes from %s (%s)"), + ifdebug(TRAFFIC) logger(LOG_INFO, "Broadcasting packet of %d bytes from %s (%s)", packet->len, from->name, from->hostname); - if(from != myself) + if(from != myself) { send_packet(myself, packet); + // In TunnelServer mode, do not forward broadcast packets. + // The MST might not be valid and create loops. + if(tunnelserver) + return; + } + for(node = connection_tree->head; node; node = node->next) { c = node->data; @@ -469,35 +517,42 @@ void broadcast_packet(const node_t *from, vpn_packet_t *packet) } } -void flush_queue(node_t *n) -{ - list_node_t *node, *next; +static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) { + avl_node_t *node; + edge_t *e; + node_t *n = NULL; - cp(); + for(node = edge_weight_tree->head; node; node = node->next) { + e = node->data; - ifdebug(TRAFFIC) logger(LOG_INFO, _("Flushing queue for %s (%s)"), n->name, n->hostname); + if(sockaddrcmp_noport(from, &e->address)) + continue; - for(node = n->queue->head; node; node = next) { - next = node->next; - send_udppacket(n, node->data); - list_delete_node(n->queue, node); + if(!n) + n = e->to; + + if(!try_mac(e->to, pkt)) + continue; + + n = e->to; + break; } + + return n; } -void handle_incoming_vpn_data(int sock) -{ +void handle_incoming_vpn_data(int sock) { vpn_packet_t pkt; char *hostname; sockaddr_t from; socklen_t fromlen = sizeof(from); node_t *n; - cp(); - pkt.len = recvfrom(sock, (char *) &pkt.seqno, MAXSIZE, 0, &from.sa, &fromlen); if(pkt.len < 0) { - logger(LOG_ERR, _("Receiving packet failed: %s"), strerror(errno)); + if(errno != EAGAIN && errno != EINTR) + logger(LOG_ERR, "Receiving packet failed: %s", strerror(errno)); return; } @@ -506,11 +561,17 @@ void handle_incoming_vpn_data(int sock) n = lookup_node_udp(&from); if(!n) { - hostname = sockaddr2hostname(&from); - logger(LOG_WARNING, _("Received UDP packet from unknown source %s"), - hostname); - free(hostname); - return; + n = try_harder(&from, &pkt); + if(n) + update_node_udp(n, &from); + else ifdebug(PROTOCOL) { + hostname = sockaddr2hostname(&from); + logger(LOG_WARNING, "Received UDP packet from unknown source %s", hostname); + free(hostname); + return; + } + else + return; } receive_udppacket(n, &pkt); diff --git a/src/net_setup.c b/src/net_setup.c index 4e9b82b..a08981f 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -1,7 +1,8 @@ /* net_setup.c -- Setup. Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen + 2006 Scott Lamb 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 @@ -13,11 +14,9 @@ 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. - - $Id: net_setup.c 1596 2008-12-22 20:35:45Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -46,14 +45,11 @@ char *myport; -bool read_rsa_public_key(connection_t *c) -{ +bool read_rsa_public_key(connection_t *c) { FILE *fp; char *fname; char *key; - cp(); - if(!c->rsa_key) { c->rsa_key = RSA_new(); // RSA_blinding_on(c->rsa_key, NULL); @@ -74,7 +70,7 @@ bool read_rsa_public_key(connection_t *c) fp = fopen(fname, "r"); if(!fp) { - logger(LOG_ERR, _("Error reading RSA public key file `%s': %s"), + logger(LOG_ERR, "Error reading RSA public key file `%s': %s", fname, strerror(errno)); free(fname); return false; @@ -91,7 +87,7 @@ bool read_rsa_public_key(connection_t *c) fp = fopen(fname, "r"); if(!fp) { - logger(LOG_ERR, _("Error reading RSA public key file `%s': %s"), + logger(LOG_ERR, "Error reading RSA public key file `%s': %s", fname, strerror(errno)); free(fname); return false; @@ -106,14 +102,14 @@ bool read_rsa_public_key(connection_t *c) return true; } - logger(LOG_ERR, _("Reading RSA public key file `%s' failed: %s"), + logger(LOG_ERR, "Reading RSA public key file `%s' failed: %s", fname, strerror(errno)); return false; } /* Else, check if a harnessed public key is in the config file */ - asprintf(&fname, "%s/hosts/%s", confbase, c->name); + xasprintf(&fname, "%s/hosts/%s", confbase, c->name); fp = fopen(fname, "r"); if(fp) { @@ -128,7 +124,7 @@ bool read_rsa_public_key(connection_t *c) /* Try again with PEM_read_RSA_PUBKEY. */ - asprintf(&fname, "%s/hosts/%s", confbase, c->name); + xasprintf(&fname, "%s/hosts/%s", confbase, c->name); fp = fopen(fname, "r"); if(fp) { @@ -142,22 +138,19 @@ bool read_rsa_public_key(connection_t *c) if(c->rsa_key) return true; - logger(LOG_ERR, _("No public key for %s specified!"), c->name); + logger(LOG_ERR, "No public key for %s specified!", c->name); return false; } -bool read_rsa_private_key(void) -{ +bool read_rsa_private_key(void) { FILE *fp; char *fname, *key, *pubkey; struct stat s; - cp(); - if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key)) { if(!get_config_string(lookup_config(myself->connection->config_tree, "PublicKey"), &pubkey)) { - logger(LOG_ERR, _("PrivateKey used but no PublicKey found!")); + logger(LOG_ERR, "PrivateKey used but no PublicKey found!"); return false; } myself->connection->rsa_key = RSA_new(); @@ -171,12 +164,12 @@ bool read_rsa_private_key(void) } if(!get_config_string(lookup_config(config_tree, "PrivateKeyFile"), &fname)) - asprintf(&fname, "%s/rsa_key.priv", confbase); + xasprintf(&fname, "%s/rsa_key.priv", confbase); fp = fopen(fname, "r"); if(!fp) { - logger(LOG_ERR, _("Error reading RSA private key file `%s': %s"), + logger(LOG_ERR, "Error reading RSA private key file `%s': %s", fname, strerror(errno)); free(fname); return false; @@ -184,21 +177,21 @@ bool read_rsa_private_key(void) #if !defined(HAVE_MINGW) && !defined(HAVE_CYGWIN) if(fstat(fileno(fp), &s)) { - logger(LOG_ERR, _("Could not stat RSA private key file `%s': %s'"), + logger(LOG_ERR, "Could not stat RSA private key file `%s': %s'", fname, strerror(errno)); free(fname); return false; } if(s.st_mode & ~0100700) - logger(LOG_WARNING, _("Warning: insecure file permissions for RSA private key file `%s'!"), fname); + logger(LOG_WARNING, "Warning: insecure file permissions for RSA private key file `%s'!", fname); #endif myself->connection->rsa_key = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL); fclose(fp); if(!myself->connection->rsa_key) { - logger(LOG_ERR, _("Reading RSA private key file `%s' failed: %s"), + logger(LOG_ERR, "Reading RSA private key file `%s' failed: %s", fname, strerror(errno)); free(fname); return false; @@ -211,8 +204,7 @@ bool read_rsa_private_key(void) /* Configure node_t myself and set up the local sockets (listen only) */ -bool setup_myself(void) -{ +bool setup_myself(void) { config_t *cfg; subnet_t *subnet; char *name, *hostname, *mode, *afname, *cipher, *digest; @@ -222,25 +214,23 @@ bool setup_myself(void) bool choice; int i, err; - cp(); - myself = new_node(); myself->connection = new_connection(); init_configuration(&myself->connection->config_tree); - asprintf(&myself->hostname, _("MYSELF")); - asprintf(&myself->connection->hostname, _("MYSELF")); + xasprintf(&myself->hostname, "MYSELF"); + xasprintf(&myself->connection->hostname, "MYSELF"); myself->connection->options = 0; myself->connection->protocol_version = PROT_CURRENT; if(!get_config_string(lookup_config(config_tree, "Name"), &name)) { /* Not acceptable */ - logger(LOG_ERR, _("Name for tinc daemon required!")); + logger(LOG_ERR, "Name for tinc daemon required!"); return false; } if(!check_id(name)) { - logger(LOG_ERR, _("Invalid name for myself!")); + logger(LOG_ERR, "Invalid name for myself!"); free(name); return false; } @@ -249,7 +239,7 @@ bool setup_myself(void) myself->connection->name = xstrdup(name); if(!read_connection_config(myself->connection)) { - logger(LOG_ERR, _("Cannot open host configuration file for myself!")); + logger(LOG_ERR, "Cannot open host configuration file for myself!"); return false; } @@ -257,7 +247,7 @@ bool setup_myself(void) return false; if(!get_config_string(lookup_config(myself->connection->config_tree, "Port"), &myport)) - asprintf(&myport, "655"); + xasprintf(&myport, "655"); /* Read in all the subnets specified in the host configuration file */ @@ -286,9 +276,6 @@ bool setup_myself(void) if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice) myself->options |= OPTION_TCPONLY; - if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice) - myself->options |= OPTION_PMTU_DISCOVERY; - if(myself->options & OPTION_TCPONLY) myself->options |= OPTION_INDIRECT; @@ -302,18 +289,25 @@ bool setup_myself(void) else if(!strcasecmp(mode, "hub")) routing_mode = RMODE_HUB; else { - logger(LOG_ERR, _("Invalid routing mode!")); + logger(LOG_ERR, "Invalid routing mode!"); return false; } free(mode); } else routing_mode = RMODE_ROUTER; + // Enable PMTUDiscovery by default if we are in router mode. + + choice = routing_mode == RMODE_ROUTER; + get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice); + if(choice) + myself->options |= OPTION_PMTU_DISCOVERY; + get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance); #if !defined(SOL_IP) || !defined(IP_TOS) if(priorityinheritance) - logger(LOG_WARNING, _("PriorityInheritance not supported on this platform")); + logger(LOG_WARNING, "%s not supported on this platform", "PriorityInheritance"); #endif if(!get_config_int(lookup_config(config_tree, "MACExpire"), &macexpire)) @@ -321,7 +315,7 @@ bool setup_myself(void) if(get_config_int(lookup_config(config_tree, "MaxTimeout"), &maxtimeout)) { if(maxtimeout <= 0) { - logger(LOG_ERR, _("Bogus maximum timeout!")); + logger(LOG_ERR, "Bogus maximum timeout!"); return false; } } else @@ -335,7 +329,7 @@ bool setup_myself(void) else if(!strcasecmp(afname, "any")) addressfamily = AF_UNSPEC; else { - logger(LOG_ERR, _("Invalid address family!")); + logger(LOG_ERR, "Invalid address family!"); return false; } free(afname); @@ -348,88 +342,72 @@ bool setup_myself(void) if(get_config_string (lookup_config(myself->connection->config_tree, "Cipher"), &cipher)) { if(!strcasecmp(cipher, "none")) { - myself->cipher = NULL; + myself->incipher = NULL; } else { - myself->cipher = EVP_get_cipherbyname(cipher); + myself->incipher = EVP_get_cipherbyname(cipher); - if(!myself->cipher) { - logger(LOG_ERR, _("Unrecognized cipher type!")); + if(!myself->incipher) { + logger(LOG_ERR, "Unrecognized cipher type!"); return false; } } } else - myself->cipher = EVP_bf_cbc(); + myself->incipher = EVP_bf_cbc(); - if(myself->cipher) - myself->keylength = myself->cipher->key_len + myself->cipher->iv_len; + if(myself->incipher) + myself->inkeylength = myself->incipher->key_len + myself->incipher->iv_len; else - myself->keylength = 1; + myself->inkeylength = 1; myself->connection->outcipher = EVP_bf_ofb(); - myself->key = xmalloc(myself->keylength); - RAND_pseudo_bytes((unsigned char *)myself->key, myself->keylength); - if(!get_config_int(lookup_config(config_tree, "KeyExpire"), &keylifetime)) keylifetime = 3600; keyexpires = now + keylifetime; - if(myself->cipher) { - EVP_CIPHER_CTX_init(&packet_ctx); - if(!EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, (unsigned char *)myself->key, (unsigned char *)myself->key + myself->cipher->key_len)) { - logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"), - myself->name, myself->hostname, ERR_error_string(ERR_get_error(), NULL)); - return false; - } - - } - /* Check if we want to use message authentication codes... */ - if(get_config_string - (lookup_config(myself->connection->config_tree, "Digest"), &digest)) { + if(get_config_string(lookup_config(myself->connection->config_tree, "Digest"), &digest)) { if(!strcasecmp(digest, "none")) { - myself->digest = NULL; + myself->indigest = NULL; } else { - myself->digest = EVP_get_digestbyname(digest); + myself->indigest = EVP_get_digestbyname(digest); - if(!myself->digest) { - logger(LOG_ERR, _("Unrecognized digest type!")); + if(!myself->indigest) { + logger(LOG_ERR, "Unrecognized digest type!"); return false; } } } else - myself->digest = EVP_sha1(); + myself->indigest = EVP_sha1(); myself->connection->outdigest = EVP_sha1(); - if(get_config_int(lookup_config(myself->connection->config_tree, "MACLength"), - &myself->maclength)) { - if(myself->digest) { - if(myself->maclength > myself->digest->md_size) { - logger(LOG_ERR, _("MAC length exceeds size of digest!")); + if(get_config_int(lookup_config(myself->connection->config_tree, "MACLength"), &myself->inmaclength)) { + if(myself->indigest) { + if(myself->inmaclength > myself->indigest->md_size) { + logger(LOG_ERR, "MAC length exceeds size of digest!"); return false; - } else if(myself->maclength < 0) { - logger(LOG_ERR, _("Bogus MAC length!")); + } else if(myself->inmaclength < 0) { + logger(LOG_ERR, "Bogus MAC length!"); return false; } } } else - myself->maclength = 4; + myself->inmaclength = 4; myself->connection->outmaclength = 0; /* Compression */ - if(get_config_int(lookup_config(myself->connection->config_tree, "Compression"), - &myself->compression)) { - if(myself->compression < 0 || myself->compression > 11) { - logger(LOG_ERR, _("Bogus compression level!")); + if(get_config_int(lookup_config(myself->connection->config_tree, "Compression"), &myself->incompression)) { + if(myself->incompression < 0 || myself->incompression > 11) { + logger(LOG_ERR, "Bogus compression level!"); return false; } } else - myself->compression = 0; + myself->incompression = 0; myself->connection->outcompression = 0; @@ -448,10 +426,10 @@ bool setup_myself(void) return false; /* Run tinc-up script to further initialize the tap interface */ - asprintf(&envp[0], "NETNAME=%s", netname ? : ""); - asprintf(&envp[1], "DEVICE=%s", device ? : ""); - asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); - asprintf(&envp[3], "NAME=%s", myself->name); + xasprintf(&envp[0], "NETNAME=%s", netname ? : ""); + xasprintf(&envp[1], "DEVICE=%s", device ? : ""); + xasprintf(&envp[2], "INTERFACE=%s", iface ? : ""); + xasprintf(&envp[3], "NAME=%s", myself->name); envp[4] = NULL; execute_script("tinc-up", envp); @@ -475,7 +453,7 @@ bool setup_myself(void) err = getaddrinfo(address, myport, &hint, &ai); if(err || !ai) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", + logger(LOG_ERR, "System call `%s' failed: %s", "getaddrinfo", gai_strerror(err)); return false; } @@ -497,7 +475,7 @@ bool setup_myself(void) ifdebug(CONNECTIONS) { hostname = sockaddr2hostname((sockaddr_t *) aip->ai_addr); - logger(LOG_NOTICE, _("Listening on %s"), hostname); + logger(LOG_NOTICE, "Listening on %s", hostname); free(hostname); } @@ -508,9 +486,9 @@ bool setup_myself(void) freeaddrinfo(ai); if(listen_sockets) - logger(LOG_NOTICE, _("Ready")); + logger(LOG_NOTICE, "Ready"); else { - logger(LOG_ERR, _("Unable to create any listening socket!")); + logger(LOG_ERR, "Unable to create any listening socket!"); return false; } @@ -518,12 +496,9 @@ bool setup_myself(void) } /* - setup all initial network connections + initialize network */ -bool setup_network_connections(void) -{ - cp(); - +bool setup_network(void) { now = time(NULL); init_events(); @@ -546,46 +521,36 @@ bool setup_network_connections(void) pingtimeout = pinginterval; if(!get_config_int(lookup_config(config_tree, "MaxOutputBufferSize"), &maxoutbufsize)) - maxoutbufsize = 4 * MTU; + maxoutbufsize = 10 * MTU; if(!setup_myself()) return false; - try_outgoing_connections(); - return true; } /* close all open network connections */ -void close_network_connections(void) -{ +void close_network_connections(void) { avl_node_t *node, *next; connection_t *c; char *envp[5]; int i; - cp(); - for(node = connection_tree->head; node; node = next) { next = node->next; c = node->data; - - if(c->outgoing) { - if(c->outgoing->ai) - freeaddrinfo(c->outgoing->ai); - free(c->outgoing->name); - free(c->outgoing); - c->outgoing = NULL; - } - + c->outgoing = false; terminate_connection(c, false); } + list_delete_list(outgoing_list); + if(myself && myself->connection) { subnet_update(myself, NULL, false); terminate_connection(myself->connection, false); + free_connection(myself->connection); } for(i = 0; i < listen_sockets; i++) { @@ -593,10 +558,10 @@ void close_network_connections(void) close(listen_socket[i].udp); } - asprintf(&envp[0], "NETNAME=%s", netname ? : ""); - asprintf(&envp[1], "DEVICE=%s", device ? : ""); - asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); - asprintf(&envp[3], "NAME=%s", myself->name); + xasprintf(&envp[0], "NETNAME=%s", netname ? : ""); + xasprintf(&envp[1], "DEVICE=%s", device ? : ""); + xasprintf(&envp[2], "INTERFACE=%s", iface ? : ""); + xasprintf(&envp[3], "NAME=%s", myself->name); envp[4] = NULL; exit_requests(); @@ -608,6 +573,8 @@ void close_network_connections(void) execute_script("tinc-down", envp); + if(myport) free(myport); + for(i = 0; i < 4; i++) free(envp[i]); diff --git a/src/net_socket.c b/src/net_socket.c index 488fe12..7189025 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -1,7 +1,9 @@ /* net_socket.c -- Handle various kinds of sockets. Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen + 2006 Scott Lamb + 2009 Florian Forster 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 @@ -13,11 +15,9 @@ 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. - - $Id: net_socket.c 1596 2008-12-22 20:35:45Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -34,6 +34,8 @@ #include "utils.h" #include "xalloc.h" +#include + #ifdef WSAEINPROGRESS #define EINPROGRESS WSAEINPROGRESS #endif @@ -49,24 +51,24 @@ int seconds_till_retry = 5; listen_socket_t listen_socket[MAXSOCKETS]; int listen_sockets; +list_t *outgoing_list = NULL; /* Setup sockets */ -static void configure_tcp(connection_t *c) -{ +static void configure_tcp(connection_t *c) { int option; #ifdef O_NONBLOCK int flags = fcntl(c->socket, F_GETFL); if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0) { - logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno)); + logger(LOG_ERR, "fcntl for %s: %s", c->hostname, strerror(errno)); } #elif defined(WIN32) unsigned long arg = 1; if(ioctlsocket(c->socket, FIONBIO, &arg) != 0) { - logger(LOG_ERR, _("ioctlsocket for %s: WSA error %d"), c->hostname, WSAGetLastError()); + logger(LOG_ERR, "ioctlsocket for %s: WSA error %d", c->hostname, WSAGetLastError()); } #endif @@ -81,19 +83,103 @@ static void configure_tcp(connection_t *c) #endif } -int setup_listen_socket(const sockaddr_t *sa) -{ +static bool bind_to_interface(int sd) { + char *iface; + +#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE) + struct ifreq ifr; + int status; +#endif /* defined(SOL_SOCKET) && defined(SO_BINDTODEVICE) */ + + if(!get_config_string (lookup_config (config_tree, "BindToInterface"), &iface)) + return true; + +#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE) + memset(&ifr, 0, sizeof(ifr)); + strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ); + ifr.ifr_ifrn.ifrn_name[IFNAMSIZ - 1] = 0; + + status = setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)); + if(status) { + logger(LOG_ERR, "Can't bind to interface %s: %s", iface, + strerror(errno)); + return false; + } +#else /* if !defined(SOL_SOCKET) || !defined(SO_BINDTODEVICE) */ + logger(LOG_WARNING, "%s not supported on this platform", "BindToInterface"); +#endif + + return true; +} + +static bool bind_to_address(connection_t *c) { + char *node; + struct addrinfo *ai_list; + struct addrinfo *ai_ptr; + struct addrinfo ai_hints; + int status; + + assert(c != NULL); + assert(c->socket >= 0); + + node = NULL; + if(!get_config_string(lookup_config(config_tree, "BindToAddress"), + &node)) + return true; + + assert(node != NULL); + + memset(&ai_hints, 0, sizeof(ai_hints)); + ai_hints.ai_family = c->address.sa.sa_family; + /* We're called from `do_outgoing_connection' only. */ + ai_hints.ai_socktype = SOCK_STREAM; + ai_hints.ai_protocol = IPPROTO_TCP; + + ai_list = NULL; + + status = getaddrinfo(node, /* service = */ NULL, + &ai_hints, &ai_list); + if(status) { + free(node); + logger(LOG_WARNING, "Error looking up %s port %s: %s", + node, "any", gai_strerror(status)); + return false; + } + assert(ai_list != NULL); + + status = -1; + for(ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { + status = bind(c->socket, + ai_list->ai_addr, ai_list->ai_addrlen); + if(!status) + break; + } + + + if(status) { + logger(LOG_ERR, "Can't bind to %s/tcp: %s", node, + strerror(errno)); + } else ifdebug(CONNECTIONS) { + logger(LOG_DEBUG, "Successfully bound outgoing " + "TCP socket to %s", node); + } + + free(node); + freeaddrinfo(ai_list); + + return status ? false : true; +} + +int setup_listen_socket(const sockaddr_t *sa) { int nfd; char *addrstr; int option; char *iface; - cp(); - nfd = socket(sa->sa.sa_family, SOCK_STREAM, IPPROTO_TCP); if(nfd < 0) { - ifdebug(STATUS) logger(LOG_ERR, _("Creating metasocket failed: %s"), strerror(errno)); + ifdebug(STATUS) logger(LOG_ERR, "Creating metasocket failed: %s", strerror(errno)); return -1; } @@ -117,19 +203,19 @@ int setup_listen_socket(const sockaddr_t *sa) if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) { closesocket(nfd); - logger(LOG_ERR, _("Can't bind to interface %s: %s"), iface, + logger(LOG_ERR, "Can't bind to interface %s: %s", iface, strerror(errno)); return -1; } #else - logger(LOG_WARNING, _("BindToInterface not supported on this platform")); + logger(LOG_WARNING, "%s not supported on this platform", "BindToInterface"); #endif } if(bind(nfd, &sa->sa, SALEN(sa->sa))) { closesocket(nfd); addrstr = sockaddr2hostname(sa); - logger(LOG_ERR, _("Can't bind to %s/tcp: %s"), addrstr, + logger(LOG_ERR, "Can't bind to %s/tcp: %s", addrstr, strerror(errno)); free(addrstr); return -1; @@ -137,7 +223,7 @@ int setup_listen_socket(const sockaddr_t *sa) if(listen(nfd, 3)) { closesocket(nfd); - logger(LOG_ERR, _("System call `%s' failed: %s"), "listen", + logger(LOG_ERR, "System call `%s' failed: %s", "listen", strerror(errno)); return -1; } @@ -145,18 +231,15 @@ int setup_listen_socket(const sockaddr_t *sa) return nfd; } -int setup_vpn_in_socket(const sockaddr_t *sa) -{ +int setup_vpn_in_socket(const sockaddr_t *sa) { int nfd; char *addrstr; int option; - cp(); - nfd = socket(sa->sa.sa_family, SOCK_DGRAM, IPPROTO_UDP); if(nfd < 0) { - logger(LOG_ERR, _("Creating UDP socket failed: %s"), strerror(errno)); + logger(LOG_ERR, "Creating UDP socket failed: %s", strerror(errno)); return -1; } @@ -166,7 +249,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) { closesocket(nfd); - logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", + logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno)); return -1; } @@ -176,7 +259,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) unsigned long arg = 1; if(ioctlsocket(nfd, FIONBIO, &arg) != 0) { closesocket(nfd); - logger(LOG_ERR, _("Call to `%s' failed: WSA error %d"), "ioctlsocket", + logger(LOG_ERR, "Call to `%s' failed: WSA error %d", "ioctlsocket", WSAGetLastError()); return -1; } @@ -192,64 +275,39 @@ int setup_vpn_in_socket(const sockaddr_t *sa) #endif #if defined(SOL_IP) && defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DO) - { - bool choice; - - if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice) { - option = IP_PMTUDISC_DO; - setsockopt(nfd, SOL_IP, IP_MTU_DISCOVER, &option, sizeof(option)); - } + if(myself->options & OPTION_PMTU_DISCOVERY) { + option = IP_PMTUDISC_DO; + setsockopt(nfd, SOL_IP, IP_MTU_DISCOVER, &option, sizeof(option)); } #endif #if defined(SOL_IPV6) && defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DO) - { - bool choice; - - if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice) { - option = IPV6_PMTUDISC_DO; - setsockopt(nfd, SOL_IPV6, IPV6_MTU_DISCOVER, &option, sizeof(option)); - } + if(myself->options & OPTION_PMTU_DISCOVERY) { + option = IPV6_PMTUDISC_DO; + setsockopt(nfd, SOL_IPV6, IPV6_MTU_DISCOVER, &option, sizeof(option)); } #endif -#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE) - { - char *iface; - struct ifreq ifr; - - if(get_config_string(lookup_config(config_tree, "BindToInterface"), &iface)) { - memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ); - - if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) { - closesocket(nfd); - logger(LOG_ERR, _("Can't bind to interface %s: %s"), iface, - strerror(errno)); - return -1; - } - } + if (!bind_to_interface(nfd)) { + closesocket(nfd); + return -1; } -#endif if(bind(nfd, &sa->sa, SALEN(sa->sa))) { closesocket(nfd); addrstr = sockaddr2hostname(sa); - logger(LOG_ERR, _("Can't bind to %s/udp: %s"), addrstr, + logger(LOG_ERR, "Can't bind to %s/udp: %s", addrstr, strerror(errno)); free(addrstr); return -1; } return nfd; -} +} /* int setup_vpn_in_socket */ -void retry_outgoing(outgoing_t *outgoing) -{ +void retry_outgoing(outgoing_t *outgoing) { event_t *event; - cp(); - outgoing->timeout += 5; if(outgoing->timeout > maxtimeout) @@ -262,15 +320,12 @@ void retry_outgoing(outgoing_t *outgoing) event_add(event); ifdebug(CONNECTIONS) logger(LOG_NOTICE, - _("Trying to re-establish outgoing connection in %d seconds"), + "Trying to re-establish outgoing connection in %d seconds", outgoing->timeout); } -void finish_connecting(connection_t *c) -{ - cp(); - - ifdebug(CONNECTIONS) logger(LOG_INFO, _("Connected to %s (%s)"), c->name, c->hostname); +void finish_connecting(connection_t *c) { + ifdebug(CONNECTIONS) logger(LOG_INFO, "Connected to %s (%s)", c->name, c->hostname); configure_tcp(c); @@ -279,17 +334,14 @@ void finish_connecting(connection_t *c) send_id(c); } -void do_outgoing_connection(connection_t *c) -{ +void do_outgoing_connection(connection_t *c) { char *address, *port; int result; - cp(); - begin: if(!c->outgoing->ai) { if(!c->outgoing->cfg) { - ifdebug(CONNECTIONS) logger(LOG_ERR, _("Could not set up a meta connection to %s"), + ifdebug(CONNECTIONS) logger(LOG_ERR, "Could not set up a meta connection to %s", c->name); c->status.remove = true; retry_outgoing(c->outgoing); @@ -299,7 +351,7 @@ begin: get_config_string(c->outgoing->cfg, &address); if(!get_config_string(lookup_config(c->config_tree, "Port"), &port)) - asprintf(&port, "655"); + xasprintf(&port, "655"); c->outgoing->ai = str2addrinfo(address, port, SOCK_STREAM); free(address); @@ -324,13 +376,13 @@ begin: c->hostname = sockaddr2hostname(&c->address); - ifdebug(CONNECTIONS) logger(LOG_INFO, _("Trying to connect to %s (%s)"), c->name, + ifdebug(CONNECTIONS) logger(LOG_INFO, "Trying to connect to %s (%s)", c->name, c->hostname); c->socket = socket(c->address.sa.sa_family, SOCK_STREAM, IPPROTO_TCP); if(c->socket == -1) { - ifdebug(CONNECTIONS) logger(LOG_ERR, _("Creating socket for %s failed: %s"), c->hostname, + ifdebug(CONNECTIONS) logger(LOG_ERR, "Creating socket for %s failed: %s", c->hostname, strerror(errno)); goto begin; @@ -342,6 +394,9 @@ begin: setsockopt(c->socket, SOL_IPV6, IPV6_V6ONLY, &option, sizeof option); #endif + bind_to_interface(c->socket); + bind_to_address(c); + /* Optimize TCP settings */ configure_tcp(c); @@ -362,7 +417,7 @@ begin: closesocket(c->socket); - ifdebug(CONNECTIONS) logger(LOG_ERR, _("%s: %s"), c->hostname, strerror(errno)); + ifdebug(CONNECTIONS) logger(LOG_ERR, "%s: %s", c->hostname, strerror(errno)); goto begin; } @@ -372,18 +427,15 @@ begin: return; } -void setup_outgoing_connection(outgoing_t *outgoing) -{ +void setup_outgoing_connection(outgoing_t *outgoing) { connection_t *c; node_t *n; - cp(); - n = lookup_node(outgoing->name); if(n) if(n->connection) { - ifdebug(CONNECTIONS) logger(LOG_INFO, _("Already connected to %s"), outgoing->name); + ifdebug(CONNECTIONS) logger(LOG_INFO, "Already connected to %s", outgoing->name); n->connection->outgoing = outgoing; return; @@ -402,10 +454,8 @@ void setup_outgoing_connection(outgoing_t *outgoing) outgoing->cfg = lookup_config(c->config_tree, "Address"); if(!outgoing->cfg) { - logger(LOG_ERR, _("No address specified for %s"), c->name); + logger(LOG_ERR, "No address specified for %s", c->name); free_connection(c); - free(outgoing->name); - free(outgoing); return; } @@ -421,19 +471,16 @@ void setup_outgoing_connection(outgoing_t *outgoing) accept a new tcp connect and create a new connection */ -bool handle_new_meta_connection(int sock) -{ +bool handle_new_meta_connection(int sock) { connection_t *c; sockaddr_t sa; int fd; socklen_t len = sizeof(sa); - cp(); - fd = accept(sock, &sa.sa, &len); if(fd < 0) { - logger(LOG_ERR, _("Accepting a new connection failed: %s"), + logger(LOG_ERR, "Accepting a new connection failed: %s", strerror(errno)); return false; } @@ -452,7 +499,7 @@ bool handle_new_meta_connection(int sock) c->socket = fd; c->last_ping_time = now; - ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection from %s"), c->hostname); + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection from %s", c->hostname); configure_tcp(c); @@ -464,20 +511,40 @@ bool handle_new_meta_connection(int sock) return true; } -void try_outgoing_connections(void) -{ +void free_outgoing(outgoing_t *outgoing) { + if(outgoing->ai) + freeaddrinfo(outgoing->ai); + + if(outgoing->name) + free(outgoing->name); + + free(outgoing); +} + +void try_outgoing_connections(void) { static config_t *cfg = NULL; char *name; outgoing_t *outgoing; + connection_t *c; + avl_node_t *node; + + if(outgoing_list) { + for(node = connection_tree->head; node; node = node->next) { + c = node->data; + c->outgoing = NULL; + } - cp(); + list_delete_list(outgoing_list); + } + outgoing_list = list_alloc((list_action_t)free_outgoing); + for(cfg = lookup_config(config_tree, "ConnectTo"); cfg; cfg = lookup_config_next(config_tree, cfg)) { get_config_string(cfg, &name); if(!check_id(name)) { logger(LOG_ERR, - _("Invalid name for outgoing connection in %s line %d"), + "Invalid name for outgoing connection in %s line %d", cfg->file, cfg->line); free(name); continue; @@ -485,6 +552,7 @@ void try_outgoing_connections(void) outgoing = xmalloc_and_zero(sizeof(*outgoing)); outgoing->name = name; + list_insert_tail(outgoing_list, outgoing); setup_outgoing_connection(outgoing); } } diff --git a/src/netutl.c b/src/netutl.c index bf08438..b8ecdd1 100644 --- a/src/netutl.c +++ b/src/netutl.c @@ -1,7 +1,7 @@ /* netutl.c -- some supporting network utility code Copyright (C) 1998-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: netutl.c 1459 2006-08-08 13:44:37Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -34,20 +32,17 @@ bool hostnames = false; Turn a string into a struct addrinfo. Return NULL on failure. */ -struct addrinfo *str2addrinfo(const char *address, const char *service, int socktype) -{ +struct addrinfo *str2addrinfo(const char *address, const char *service, int socktype) { struct addrinfo *ai, hint = {0}; int err; - cp(); - hint.ai_family = addressfamily; hint.ai_socktype = socktype; err = getaddrinfo(address, service, &hint, &ai); if(err) { - logger(LOG_WARNING, _("Error looking up %s port %s: %s"), address, + logger(LOG_WARNING, "Error looking up %s port %s: %s", address, service, gai_strerror(err)); return NULL; } @@ -55,14 +50,11 @@ struct addrinfo *str2addrinfo(const char *address, const char *service, int sock return ai; } -sockaddr_t str2sockaddr(const char *address, const char *port) -{ +sockaddr_t str2sockaddr(const char *address, const char *port) { struct addrinfo *ai, hint = {0}; sockaddr_t result; int err; - cp(); - hint.ai_family = AF_UNSPEC; hint.ai_flags = AI_NUMERICHOST; hint.ai_socktype = SOCK_STREAM; @@ -84,15 +76,12 @@ sockaddr_t str2sockaddr(const char *address, const char *port) return result; } -void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) -{ +void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) { char address[NI_MAXHOST]; char port[NI_MAXSERV]; char *scopeid; int err; - cp(); - if(sa->sa.sa_family == AF_UNKNOWN) { *addrstr = xstrdup(sa->unknown.address); *portstr = xstrdup(sa->unknown.port); @@ -102,9 +91,8 @@ void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); if(err) { - logger(LOG_ERR, _("Error while translating addresses: %s"), + logger(LOG_ERR, "Error while translating addresses: %s", gai_strerror(err)); - cp_trace(); raise(SIGFPE); exit(0); } @@ -118,37 +106,60 @@ void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) *portstr = xstrdup(port); } -char *sockaddr2hostname(const sockaddr_t *sa) -{ +char *sockaddr2hostname(const sockaddr_t *sa) { char *str; char address[NI_MAXHOST] = "unknown"; char port[NI_MAXSERV] = "unknown"; int err; - cp(); - if(sa->sa.sa_family == AF_UNKNOWN) { - asprintf(&str, _("%s port %s"), sa->unknown.address, sa->unknown.port); + xasprintf(&str, "%s port %s", sa->unknown.address, sa->unknown.port); return str; } err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port), hostnames ? 0 : (NI_NUMERICHOST | NI_NUMERICSERV)); if(err) { - logger(LOG_ERR, _("Error while looking up hostname: %s"), + logger(LOG_ERR, "Error while looking up hostname: %s", gai_strerror(err)); } - asprintf(&str, _("%s port %s"), address, port); + xasprintf(&str, "%s port %s", address, port); return str; } -int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) -{ +int sockaddrcmp_noport(const sockaddr_t *a, const sockaddr_t *b) { int result; - cp(); + result = a->sa.sa_family - b->sa.sa_family; + + if(result) + return result; + + switch (a->sa.sa_family) { + case AF_UNSPEC: + return 0; + + case AF_UNKNOWN: + return strcmp(a->unknown.address, b->unknown.address); + + case AF_INET: + return memcmp(&a->in.sin_addr, &b->in.sin_addr, sizeof(a->in.sin_addr)); + + case AF_INET6: + return memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof(a->in6.sin6_addr)); + + default: + logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!", + a->sa.sa_family); + raise(SIGFPE); + exit(0); + } +} + +int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) { + int result; result = a->sa.sa_family - b->sa.sa_family; @@ -184,17 +195,14 @@ int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) return memcmp(&a->in6.sin6_port, &b->in6.sin6_port, sizeof(a->in6.sin6_port)); default: - logger(LOG_ERR, _("sockaddrcmp() was called with unknown address family %d, exitting!"), + logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!", a->sa.sa_family); - cp_trace(); raise(SIGFPE); exit(0); } } void sockaddrcpy(sockaddr_t *a, const sockaddr_t *b) { - cp(); - if(b->sa.sa_family != AF_UNKNOWN) { *a = *b; } else { @@ -205,18 +213,13 @@ void sockaddrcpy(sockaddr_t *a, const sockaddr_t *b) { } void sockaddrfree(sockaddr_t *a) { - cp(); - if(a->sa.sa_family == AF_UNKNOWN) { free(a->unknown.address); free(a->unknown.port); } } -void sockaddrunmap(sockaddr_t *sa) -{ - cp(); - +void sockaddrunmap(sockaddr_t *sa) { if(sa->sa.sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&sa->in6.sin6_addr)) { sa->in.sin_addr.s_addr = ((uint32_t *) & sa->in6.sin6_addr)[3]; sa->in.sin_family = AF_INET; @@ -225,14 +228,11 @@ void sockaddrunmap(sockaddr_t *sa) /* Subnet mask handling */ -int maskcmp(const void *va, const void *vb, int masklen) -{ +int maskcmp(const void *va, const void *vb, int masklen) { int i, m, result; const char *a = va; const char *b = vb; - cp(); - for(m = masklen, i = 0; m >= 8; m -= 8, i++) { result = a[i] - b[i]; if(result) @@ -246,13 +246,10 @@ int maskcmp(const void *va, const void *vb, int masklen) return 0; } -void mask(void *va, int masklen, int len) -{ +void mask(void *va, int masklen, int len) { int i; char *a = va; - cp(); - i = masklen / 8; masklen %= 8; @@ -263,14 +260,11 @@ void mask(void *va, int masklen, int len) a[i] = 0; } -void maskcpy(void *va, const void *vb, int masklen, int len) -{ +void maskcpy(void *va, const void *vb, int masklen, int len) { int i, m; char *a = va; const char *b = vb; - cp(); - for(m = masklen, i = 0; m >= 8; m -= 8, i++) a[i] = b[i]; @@ -283,13 +277,10 @@ void maskcpy(void *va, const void *vb, int masklen, int len) a[i] = 0; } -bool maskcheck(const void *va, int masklen, int len) -{ +bool maskcheck(const void *va, int masklen, int len) { int i; const char *a = va; - cp(); - i = masklen / 8; masklen %= 8; diff --git a/src/netutl.h b/src/netutl.h index 9158ff8..7fc41e8 100644 --- a/src/netutl.h +++ b/src/netutl.h @@ -1,7 +1,7 @@ /* netutl.h -- header file for netutl.c - Copyright (C) 1998-2005 Ivo Timmermans - 2000-2006 Guus Sliepen + Copyright (C) 1998-2005 Ivo Timmermans + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: netutl.h 1459 2006-08-08 13:44:37Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_NETUTL_H__ @@ -32,6 +30,7 @@ extern sockaddr_t str2sockaddr(const char *, const char *); extern void sockaddr2str(const sockaddr_t *, char **, char **); extern char *sockaddr2hostname(const sockaddr_t *); extern int sockaddrcmp(const sockaddr_t *, const sockaddr_t *); +extern int sockaddrcmp_noport(const sockaddr_t *, const sockaddr_t *); extern void sockaddrunmap(sockaddr_t *); extern void sockaddrfree(sockaddr_t *); extern void sockaddrcpy(sockaddr_t *, const sockaddr_t *); diff --git a/src/node.c b/src/node.c index cff7875..c1f1219 100644 --- a/src/node.c +++ b/src/node.c @@ -1,6 +1,6 @@ /* node.c -- node tree management - Copyright (C) 2001-2006 Guus Sliepen , + Copyright (C) 2001-2009 Guus Sliepen , 2001-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: node.c 1469 2006-11-11 22:44:15Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -35,66 +33,43 @@ avl_tree_t *node_udp_tree; /* Known nodes, sorted by address and port */ node_t *myself; -static int node_compare(const node_t *a, const node_t *b) -{ +static int node_compare(const node_t *a, const node_t *b) { return strcmp(a->name, b->name); } -static int node_udp_compare(const node_t *a, const node_t *b) -{ - int result; - - cp(); - - result = sockaddrcmp(&a->address, &b->address); - - if(result) - return result; - - return (a->name && b->name) ? strcmp(a->name, b->name) : 0; +static int node_udp_compare(const node_t *a, const node_t *b) { + return sockaddrcmp(&a->address, &b->address); } -void init_nodes(void) -{ - cp(); - +void init_nodes(void) { node_tree = avl_alloc_tree((avl_compare_t) node_compare, (avl_action_t) free_node); node_udp_tree = avl_alloc_tree((avl_compare_t) node_udp_compare, NULL); } -void exit_nodes(void) -{ - cp(); - +void exit_nodes(void) { avl_delete_tree(node_udp_tree); avl_delete_tree(node_tree); } -node_t *new_node(void) -{ +node_t *new_node(void) { node_t *n = xmalloc_and_zero(sizeof(*n)); - cp(); - n->subnet_tree = new_subnet_tree(); n->edge_tree = new_edge_tree(); - n->queue = list_alloc((list_action_t) free); - EVP_CIPHER_CTX_init(&n->packet_ctx); + EVP_CIPHER_CTX_init(&n->inctx); + EVP_CIPHER_CTX_init(&n->outctx); n->mtu = MTU; n->maxmtu = MTU; return n; } -void free_node(node_t *n) -{ - cp(); +void free_node(node_t *n) { + if(n->inkey) + free(n->inkey); - if(n->queue) - list_delete_list(n->queue); - - if(n->key) - free(n->key); + if(n->outkey) + free(n->outkey); if(n->subnet_tree) free_subnet_tree(n->subnet_tree); @@ -104,12 +79,11 @@ void free_node(node_t *n) sockaddrfree(&n->address); - EVP_CIPHER_CTX_cleanup(&n->packet_ctx); + EVP_CIPHER_CTX_cleanup(&n->inctx); + EVP_CIPHER_CTX_cleanup(&n->outctx); - if(n->mtuevent) { + if(n->mtuevent) event_del(n->mtuevent); - free_event(n->mtuevent); - } if(n->hostname) free(n->hostname); @@ -120,21 +94,15 @@ void free_node(node_t *n) free(n); } -void node_add(node_t *n) -{ - cp(); - +void node_add(node_t *n) { avl_insert(node_tree, n); } -void node_del(node_t *n) -{ +void node_del(node_t *n) { avl_node_t *node, *next; edge_t *e; subnet_t *s; - cp(); - for(node = n->subnet_tree->head; node; node = next) { next = node->next; s = node->data; @@ -147,49 +115,59 @@ void node_del(node_t *n) edge_del(e); } + avl_delete(node_udp_tree, n); avl_delete(node_tree, n); } -node_t *lookup_node(char *name) -{ +node_t *lookup_node(char *name) { node_t n = {0}; - cp(); - n.name = name; return avl_search(node_tree, &n); } -node_t *lookup_node_udp(const sockaddr_t *sa) -{ +node_t *lookup_node_udp(const sockaddr_t *sa) { node_t n = {0}; - cp(); - n.address = *sa; n.name = NULL; return avl_search(node_udp_tree, &n); } -void dump_nodes(void) -{ +void update_node_udp(node_t *n, const sockaddr_t *sa) { + avl_delete(node_udp_tree, n); + + if(n->hostname) + free(n->hostname); + + if(sa) { + n->address = *sa; + n->hostname = sockaddr2hostname(&n->address); + avl_insert(node_udp_tree, n); + ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s set to %s", n->name, n->hostname); + } else { + memset(&n->address, 0, sizeof n->address); + n->hostname = 0; + ifdebug(PROTOCOL) logger(LOG_DEBUG, "UDP address of %s cleared", n->name); + } +} + +void dump_nodes(void) { avl_node_t *node; node_t *n; - cp(); - - logger(LOG_DEBUG, _("Nodes:")); + logger(LOG_DEBUG, "Nodes:"); for(node = node_tree->head; node; node = node->next) { n = node->data; - logger(LOG_DEBUG, _(" %s at %s cipher %d digest %d maclength %d compression %d options %lx status %04x nexthop %s via %s pmtu %d (min %d max %d)"), - n->name, n->hostname, n->cipher ? n->cipher->nid : 0, - n->digest ? n->digest->type : 0, n->maclength, n->compression, - n->options, *(uint32_t *)&n->status, n->nexthop ? n->nexthop->name : "-", + logger(LOG_DEBUG, " %s at %s cipher %d digest %d maclength %d compression %d options %lx status %04x nexthop %s via %s pmtu %d (min %d max %d)", + n->name, n->hostname, n->outcipher ? n->outcipher->nid : 0, + n->outdigest ? n->outdigest->type : 0, n->outmaclength, n->outcompression, + n->options, bitfield_to_int(&n->status, sizeof n->status), n->nexthop ? n->nexthop->name : "-", n->via ? n->via->name : "-", n->mtu, n->minmtu, n->maxmtu); } - logger(LOG_DEBUG, _("End of nodes.")); + logger(LOG_DEBUG, "End of nodes."); } diff --git a/src/node.h b/src/node.h index b9217ad..619baa9 100644 --- a/src/node.h +++ b/src/node.h @@ -1,6 +1,6 @@ /* node.h -- header for node.c - Copyright (C) 2001-2006 Guus Sliepen , + Copyright (C) 2001-2009 Guus Sliepen , 2001-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: node.h 1462 2006-11-11 13:43:00Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_NODE_H__ @@ -29,17 +27,14 @@ #include "list.h" #include "subnet.h" -typedef union node_status_t { - struct { - int unused_active:1; /* 1 if active (not used for nodes) */ - int validkey:1; /* 1 if we currently have a valid key for him */ - int waitingforkey:1; /* 1 if we already sent out a request */ - int visited:1; /* 1 if this node has been visited by one of the graph algorithms */ - int reachable:1; /* 1 if this node is reachable in the graph */ - int indirect:1; /* 1 if this node is not directly reachable by us */ - int unused:26; - }; - uint32_t value; +typedef struct node_status_t { + int unused_active:1; /* 1 if active (not used for nodes) */ + int validkey:1; /* 1 if we currently have a valid key for him */ + int waitingforkey:1; /* 1 if we already sent out a request */ + int visited:1; /* 1 if this node has been visited by one of the graph algorithms */ + int reachable:1; /* 1 if this node is reachable in the graph */ + int indirect:1; /* 1 if this node is not directly reachable by us */ + int unused:26; } node_status_t; typedef struct node_t { @@ -51,17 +46,24 @@ typedef struct node_t { node_status_t status; - const EVP_CIPHER *cipher; /* Cipher type for UDP packets */ - char *key; /* Cipher key and iv */ - int keylength; /* Cipher key and iv length */ - EVP_CIPHER_CTX packet_ctx; /* Cipher context */ + const EVP_CIPHER *incipher; /* Cipher type for UDP packets received from him */ + char *inkey; /* Cipher key and iv */ + int inkeylength; /* Cipher key and iv length */ + EVP_CIPHER_CTX inctx; /* Cipher context */ - const EVP_MD *digest; /* Digest type for MAC */ - int maclength; /* Length of MAC */ + const EVP_CIPHER *outcipher; /* Cipher type for UDP packets sent to him*/ + char *outkey; /* Cipher key and iv */ + int outkeylength; /* Cipher key and iv length */ + EVP_CIPHER_CTX outctx; /* Cipher context */ + + const EVP_MD *indigest; /* Digest type for MAC of packets received from him */ + int inmaclength; /* Length of MAC */ - int compression; /* Compressionlevel, 0 = no compression */ + const EVP_MD *outdigest; /* Digest type for MAC of packets sent to him*/ + int outmaclength; /* Length of MAC */ - list_t *queue; /* Queue for packets awaiting to be encrypted */ + int incompression; /* Compressionlevel, 0 = no compression */ + int outcompression; /* Compressionlevel, 0 = no compression */ struct node_t *nexthop; /* nearest node from us to him */ struct node_t *via; /* next hop for UDP packets */ @@ -95,6 +97,7 @@ extern void node_add(node_t *); extern void node_del(node_t *); extern node_t *lookup_node(char *); extern node_t *lookup_node_udp(const sockaddr_t *); +extern void update_node_udp(node_t *, const sockaddr_t *); extern void dump_nodes(void); #endif /* __TINC_NODE_H__ */ diff --git a/src/process.c b/src/process.c index e2b97ee..01ebe49 100644 --- a/src/process.c +++ b/src/process.c @@ -1,7 +1,7 @@ /* process.c -- process management functions Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2007 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: process.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -49,10 +47,8 @@ sigset_t emptysigset; static int saved_debug_level = -1; -static void memory_full(int size) -{ - logger(LOG_ERR, _("Memory exhausted (couldn't allocate %d bytes), exitting."), size); - cp_trace(); +static void memory_full(int size) { + logger(LOG_ERR, "Memory exhausted (couldn't allocate %d bytes), exitting.", size); exit(1); } @@ -76,7 +72,7 @@ bool install_service(void) { manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(!manager) { - logger(LOG_ERR, _("Could not open service manager: %s"), winerror(GetLastError())); + logger(LOG_ERR, "Could not open service manager: %s", winerror(GetLastError())); return false; } @@ -107,18 +103,18 @@ bool install_service(void) { command, NULL, NULL, NULL, NULL, NULL); if(!service) { - logger(LOG_ERR, _("Could not create %s service: %s"), identname, winerror(GetLastError())); + logger(LOG_ERR, "Could not create %s service: %s", identname, winerror(GetLastError())); return false; } ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description); - logger(LOG_INFO, _("%s service installed"), identname); + logger(LOG_INFO, "%s service installed", identname); if(!StartService(service, 0, NULL)) - logger(LOG_WARNING, _("Could not start %s service: %s"), identname, winerror(GetLastError())); + logger(LOG_WARNING, "Could not start %s service: %s", identname, winerror(GetLastError())); else - logger(LOG_INFO, _("%s service started"), identname); + logger(LOG_INFO, "%s service started", identname); return true; } @@ -126,28 +122,28 @@ bool install_service(void) { bool remove_service(void) { manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(!manager) { - logger(LOG_ERR, _("Could not open service manager: %s"), winerror(GetLastError())); + logger(LOG_ERR, "Could not open service manager: %s", winerror(GetLastError())); return false; } service = OpenService(manager, identname, SERVICE_ALL_ACCESS); if(!service) { - logger(LOG_ERR, _("Could not open %s service: %s"), identname, winerror(GetLastError())); + logger(LOG_ERR, "Could not open %s service: %s", identname, winerror(GetLastError())); return false; } if(!ControlService(service, SERVICE_CONTROL_STOP, &status)) - logger(LOG_ERR, _("Could not stop %s service: %s"), identname, winerror(GetLastError())); + logger(LOG_ERR, "Could not stop %s service: %s", identname, winerror(GetLastError())); else - logger(LOG_INFO, _("%s service stopped"), identname); + logger(LOG_INFO, "%s service stopped", identname); if(!DeleteService(service)) { - logger(LOG_ERR, _("Could not remove %s service: %s"), identname, winerror(GetLastError())); + logger(LOG_ERR, "Could not remove %s service: %s", identname, winerror(GetLastError())); return false; } - logger(LOG_INFO, _("%s service removed"), identname); + logger(LOG_INFO, "%s service removed", identname); return true; } @@ -158,13 +154,13 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) { SetServiceStatus(statushandle, &status); return NO_ERROR; case SERVICE_CONTROL_STOP: - logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_STOP"); + logger(LOG_NOTICE, "Got %s request", "SERVICE_CONTROL_STOP"); break; case SERVICE_CONTROL_SHUTDOWN: - logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_SHUTDOWN"); + logger(LOG_NOTICE, "Got %s request", "SERVICE_CONTROL_SHUTDOWN"); break; default: - logger(LOG_WARNING, _("Got unexpected request %d"), request); + logger(LOG_WARNING, "Got unexpected request %d", request); return ERROR_CALL_NOT_IMPLEMENTED; } @@ -183,8 +179,7 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) { } -VOID WINAPI run_service(DWORD argc, LPTSTR* argv) -{ +VOID WINAPI run_service(DWORD argc, LPTSTR* argv) { int err = 1; extern int main2(int argc, char **argv); @@ -198,7 +193,7 @@ VOID WINAPI run_service(DWORD argc, LPTSTR* argv) statushandle = RegisterServiceCtrlHandlerEx(identname, controlhandler, NULL); if (!statushandle) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "RegisterServiceCtrlHandlerEx", winerror(GetLastError())); + logger(LOG_ERR, "System call `%s' failed: %s", "RegisterServiceCtrlHandlerEx", winerror(GetLastError())); err = 1; } else { status.dwWaitHint = 30000; @@ -231,7 +226,7 @@ bool init_service(void) { return false; } else - logger(LOG_ERR, _("System call `%s' failed: %s"), "StartServiceCtrlDispatcher", winerror(GetLastError())); + logger(LOG_ERR, "System call `%s' failed: %s", "StartServiceCtrlDispatcher", winerror(GetLastError())); } return true; @@ -242,26 +237,23 @@ bool init_service(void) { /* check for an existing tinc for this net, and write pid to pidfile */ -static bool write_pidfile(void) -{ +static bool write_pidfile(void) { pid_t pid; - cp(); - pid = check_pid(pidfilename); if(pid) { if(netname) - fprintf(stderr, _("A tincd is already running for net `%s' with pid %ld.\n"), + fprintf(stderr, "A tincd is already running for net `%s' with pid %ld.\n", netname, (long)pid); else - fprintf(stderr, _("A tincd is already running with pid %ld.\n"), (long)pid); + fprintf(stderr, "A tincd is already running with pid %ld.\n", (long)pid); return false; } /* if it's locked, write-protected, or whatever */ if(!write_pid(pidfilename)) { - fprintf(stderr, _("Could write pid file %s: %s\n"), pidfilename, strerror(errno)); + fprintf(stderr, "Could write pid file %s: %s\n", pidfilename, strerror(errno)); return false; } @@ -272,21 +264,18 @@ static bool write_pidfile(void) /* kill older tincd for this net */ -bool kill_other(int signal) -{ +bool kill_other(int signal) { #ifndef HAVE_MINGW pid_t pid; - cp(); - pid = read_pid(pidfilename); if(!pid) { if(netname) - fprintf(stderr, _("No other tincd is running for net `%s'.\n"), + fprintf(stderr, "No other tincd is running for net `%s'.\n", netname); else - fprintf(stderr, _("No other tincd is running.\n")); + fprintf(stderr, "No other tincd is running.\n"); return false; } @@ -295,12 +284,12 @@ bool kill_other(int signal) /* ESRCH is returned when no process with that pid is found */ if(kill(pid, signal) && errno == ESRCH) { if(netname) - fprintf(stderr, _("The tincd for net `%s' is no longer running. "), + fprintf(stderr, "The tincd for net `%s' is no longer running. ", netname); else - fprintf(stderr, _("The tincd is no longer running. ")); + fprintf(stderr, "The tincd is no longer running. "); - fprintf(stderr, _("Removing stale lock file.\n")); + fprintf(stderr, "Removing stale lock file.\n"); remove_pid(pidfilename); } @@ -313,10 +302,7 @@ bool kill_other(int signal) /* Detach from current terminal, write pidfile, kill parent */ -bool detach(void) -{ - cp(); - +bool detach(void) { setup_signals(); /* First check if we can open a fresh new pidfile */ @@ -333,7 +319,7 @@ bool detach(void) if(do_detach) { #ifndef HAVE_MINGW if(daemon(0, 0)) { - fprintf(stderr, _("Couldn't detach from terminal: %s"), + fprintf(stderr, "Couldn't detach from terminal: %s", strerror(errno)); return false; } @@ -341,7 +327,7 @@ bool detach(void) /* Now UPDATE the pid in the pidfile, because we changed it... */ if(!write_pid(pidfilename)) { - fprintf(stderr, _("Could not write pid file %s: %s\n"), pidfilename, strerror(errno)); + fprintf(stderr, "Could not write pid file %s: %s\n", pidfilename, strerror(errno)); return false; } #else @@ -352,7 +338,7 @@ bool detach(void) openlogger(identname, use_logfile?LOGMODE_FILE:(do_detach?LOGMODE_SYSLOG:LOGMODE_STDERR)); - logger(LOG_NOTICE, _("tincd %s (%s %s) starting, debug level %d"), + logger(LOG_NOTICE, "tincd %s (%s %s) starting, debug level %d", VERSION, __DATE__, __TIME__, debug_level); xalloc_fail_func = memory_full; @@ -360,34 +346,32 @@ bool detach(void) return true; } -bool execute_script(const char *name, char **envp) -{ +bool execute_script(const char *name, char **envp) { #ifdef HAVE_SYSTEM int status, len; - struct stat s; char *scriptname, *p; int i; - cp(); - #ifndef HAVE_MINGW - len = asprintf(&scriptname, "\"%s/%s\"", confbase, name); + len = xasprintf(&scriptname, "\"%s/%s\"", confbase, name); #else - len = asprintf(&scriptname, "\"%s/%s.bat\"", confbase, name); + len = xasprintf(&scriptname, "\"%s/%s.bat\"", confbase, name); #endif if(len < 0) return false; scriptname[len - 1] = '\0'; +#ifndef HAVE_TUNEMU /* First check if there is a script */ - if(stat(scriptname + 1, &s)) { + if(access(scriptname + 1, F_OK)) { free(scriptname); return true; } +#endif - ifdebug(STATUS) logger(LOG_INFO, _("Executing script %s"), name); + ifdebug(STATUS) logger(LOG_INFO, "Executing script %s", name); #ifdef HAVE_PUTENV /* Set environment */ @@ -417,20 +401,20 @@ bool execute_script(const char *name, char **envp) if(status != -1) { if(WIFEXITED(status)) { /* Child exited by itself */ if(WEXITSTATUS(status)) { - logger(LOG_ERR, _("Script %s exited with non-zero status %d"), + logger(LOG_ERR, "Script %s exited with non-zero status %d", name, WEXITSTATUS(status)); return false; } } else if(WIFSIGNALED(status)) { /* Child was killed by a signal */ - logger(LOG_ERR, _("Script %s was killed by signal %d (%s)"), + logger(LOG_ERR, "Script %s was killed by signal %d (%s)", name, WTERMSIG(status), strsignal(WTERMSIG(status))); return false; } else { /* Something strange happened */ - logger(LOG_ERR, _("Script %s terminated abnormally"), name); + logger(LOG_ERR, "Script %s terminated abnormally", name); return false; } } else { - logger(LOG_ERR, _("System call `%s' failed: %s"), "system", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "system", strerror(errno)); return false; } #endif @@ -444,40 +428,34 @@ bool execute_script(const char *name, char **envp) */ #ifndef HAVE_MINGW -static RETSIGTYPE sigterm_handler(int a) -{ - logger(LOG_NOTICE, _("Got %s signal"), "TERM"); +static RETSIGTYPE sigterm_handler(int a) { + logger(LOG_NOTICE, "Got %s signal", "TERM"); if(running) running = false; else exit(1); } -static RETSIGTYPE sigquit_handler(int a) -{ - logger(LOG_NOTICE, _("Got %s signal"), "QUIT"); +static RETSIGTYPE sigquit_handler(int a) { + logger(LOG_NOTICE, "Got %s signal", "QUIT"); if(running) running = false; else exit(1); } -static RETSIGTYPE fatal_signal_square(int a) -{ - logger(LOG_ERR, _("Got another fatal signal %d (%s): not restarting."), a, +static RETSIGTYPE fatal_signal_square(int a) { + logger(LOG_ERR, "Got another fatal signal %d (%s): not restarting.", a, strsignal(a)); - cp_trace(); exit(1); } -static RETSIGTYPE fatal_signal_handler(int a) -{ +static RETSIGTYPE fatal_signal_handler(int a) { struct sigaction act; - logger(LOG_ERR, _("Got fatal signal %d (%s)"), a, strsignal(a)); - cp_trace(); + logger(LOG_ERR, "Got fatal signal %d (%s)", a, strsignal(a)); if(do_detach) { - logger(LOG_NOTICE, _("Trying to re-execute in 5 seconds...")); + logger(LOG_NOTICE, "Trying to re-execute in 5 seconds..."); act.sa_handler = fatal_signal_square; act.sa_mask = emptysigset; @@ -489,68 +467,59 @@ static RETSIGTYPE fatal_signal_handler(int a) remove_pid(pidfilename); execvp(g_argv[0], g_argv); } else { - logger(LOG_NOTICE, _("Not restarting.")); + logger(LOG_NOTICE, "Not restarting."); exit(1); } } -static RETSIGTYPE sighup_handler(int a) -{ - logger(LOG_NOTICE, _("Got %s signal"), "HUP"); +static RETSIGTYPE sighup_handler(int a) { + logger(LOG_NOTICE, "Got %s signal", "HUP"); sighup = true; } -static RETSIGTYPE sigint_handler(int a) -{ - logger(LOG_NOTICE, _("Got %s signal"), "INT"); +static RETSIGTYPE sigint_handler(int a) { + logger(LOG_NOTICE, "Got %s signal", "INT"); if(saved_debug_level != -1) { - logger(LOG_NOTICE, _("Reverting to old debug level (%d)"), + logger(LOG_NOTICE, "Reverting to old debug level (%d)", saved_debug_level); debug_level = saved_debug_level; saved_debug_level = -1; } else { logger(LOG_NOTICE, - _("Temporarily setting debug level to 5. Kill me with SIGINT again to go back to level %d."), + "Temporarily setting debug level to 5. Kill me with SIGINT again to go back to level %d.", debug_level); saved_debug_level = debug_level; debug_level = 5; } } -static RETSIGTYPE sigalrm_handler(int a) -{ - logger(LOG_NOTICE, _("Got %s signal"), "ALRM"); +static RETSIGTYPE sigalrm_handler(int a) { + logger(LOG_NOTICE, "Got %s signal", "ALRM"); sigalrm = true; } -static RETSIGTYPE sigusr1_handler(int a) -{ +static RETSIGTYPE sigusr1_handler(int a) { dump_connections(); } -static RETSIGTYPE sigusr2_handler(int a) -{ +static RETSIGTYPE sigusr2_handler(int a) { dump_device_stats(); dump_nodes(); dump_edges(); dump_subnets(); } -static RETSIGTYPE sigwinch_handler(int a) -{ +static RETSIGTYPE sigwinch_handler(int a) { do_purge = true; } -static RETSIGTYPE unexpected_signal_handler(int a) -{ - logger(LOG_WARNING, _("Got unexpected signal %d (%s)"), a, strsignal(a)); - cp_trace(); +static RETSIGTYPE unexpected_signal_handler(int a) { + logger(LOG_WARNING, "Got unexpected signal %d (%s)", a, strsignal(a)); } -static RETSIGTYPE ignore_signal_handler(int a) -{ - ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Ignored signal %d (%s)"), a, strsignal(a)); +static RETSIGTYPE ignore_signal_handler(int a) { + ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Ignored signal %d (%s)", a, strsignal(a)); } static struct { @@ -574,8 +543,7 @@ static struct { }; #endif -void setup_signals(void) -{ +void setup_signals(void) { #ifndef HAVE_MINGW int i; struct sigaction act; @@ -587,7 +555,7 @@ void setup_signals(void) /* Set a default signal handler for every signal, errors will be ignored. */ - for(i = 0; i < NSIG; i++) { + for(i = 1; i < NSIG; i++) { if(!do_detach) act.sa_handler = SIG_DFL; else @@ -604,7 +572,7 @@ void setup_signals(void) for(i = 0; sighandlers[i].signal; i++) { act.sa_handler = sighandlers[i].handler; if(sigaction(sighandlers[i].signal, &act, NULL) < 0) - fprintf(stderr, _("Installing signal handler for signal %d (%s) failed: %s\n"), + fprintf(stderr, "Installing signal handler for signal %d (%s) failed: %s\n", sighandlers[i].signal, strsignal(sighandlers[i].signal), strerror(errno)); } diff --git a/src/process.h b/src/process.h index 793189d..bb42cd0 100644 --- a/src/process.h +++ b/src/process.h @@ -13,11 +13,9 @@ 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. - - $Id: process.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_PROCESS_H__ diff --git a/src/protocol.c b/src/protocol.c index a0abdcd..f09aff6 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -1,7 +1,7 @@ /* protocol.c -- handle the meta-protocol, basic functions Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: protocol.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -55,8 +53,7 @@ static char (*request_name[]) = { static avl_tree_t *past_request_tree; -bool check_id(const char *id) -{ +bool check_id(const char *id) { for(; *id; id++) if(!isalnum(*id) && *id != '_') return false; @@ -67,15 +64,12 @@ bool check_id(const char *id) /* Generic request routines - takes care of logging and error detection as well */ -bool send_request(connection_t *c, const char *format, ...) -{ +bool send_request(connection_t *c, const char *format, ...) { va_list args; char buffer[MAXBUFSIZE]; int len, request; - cp(); - - /* Use vsnprintf instead of vasprintf: faster, no memory + /* Use vsnprintf instead of vxasprintf: faster, no memory fragmentation, cleanup is automatic, and there is a limit on the input buffer anyway */ @@ -84,7 +78,7 @@ bool send_request(connection_t *c, const char *format, ...) va_end(args); if(len < 0 || len > MAXBUFSIZE - 1) { - logger(LOG_ERR, _("Output buffer overflow while sending request to %s (%s)"), + logger(LOG_ERR, "Output buffer overflow while sending request to %s (%s)", c->name, c->hostname); return false; } @@ -92,10 +86,10 @@ bool send_request(connection_t *c, const char *format, ...) ifdebug(PROTOCOL) { sscanf(buffer, "%d", &request); ifdebug(META) - logger(LOG_DEBUG, _("Sending %s to %s (%s): %s"), + logger(LOG_DEBUG, "Sending %s to %s (%s): %s", request_name[request], c->name, c->hostname, buffer); else - logger(LOG_DEBUG, _("Sending %s to %s (%s)"), request_name[request], + logger(LOG_DEBUG, "Sending %s to %s (%s)", request_name[request], c->name, c->hostname); } @@ -108,20 +102,17 @@ bool send_request(connection_t *c, const char *format, ...) return send_meta(c, buffer, len); } -void forward_request(connection_t *from) -{ +void forward_request(connection_t *from) { int request; - cp(); - ifdebug(PROTOCOL) { sscanf(from->buffer, "%d", &request); ifdebug(META) - logger(LOG_DEBUG, _("Forwarding %s from %s (%s): %s"), + logger(LOG_DEBUG, "Forwarding %s from %s (%s): %s", request_name[request], from->name, from->hostname, from->buffer); else - logger(LOG_DEBUG, _("Forwarding %s from %s (%s)"), + logger(LOG_DEBUG, "Forwarding %s from %s (%s)", request_name[request], from->name, from->hostname); } @@ -130,36 +121,33 @@ void forward_request(connection_t *from) broadcast_meta(from, from->buffer, from->reqlen); } -bool receive_request(connection_t *c) -{ +bool receive_request(connection_t *c) { int request; - cp(); - if(sscanf(c->buffer, "%d", &request) == 1) { if((request < 0) || (request >= LAST) || !request_handlers[request]) { ifdebug(META) - logger(LOG_DEBUG, _("Unknown request from %s (%s): %s"), + logger(LOG_DEBUG, "Unknown request from %s (%s): %s", c->name, c->hostname, c->buffer); else - logger(LOG_ERR, _("Unknown request from %s (%s)"), + logger(LOG_ERR, "Unknown request from %s (%s)", c->name, c->hostname); return false; } else { ifdebug(PROTOCOL) { ifdebug(META) - logger(LOG_DEBUG, _("Got %s from %s (%s): %s"), + logger(LOG_DEBUG, "Got %s from %s (%s): %s", request_name[request], c->name, c->hostname, c->buffer); else - logger(LOG_DEBUG, _("Got %s from %s (%s)"), + logger(LOG_DEBUG, "Got %s from %s (%s)", request_name[request], c->name, c->hostname); } } if((c->allow_request != ALL) && (c->allow_request != request)) { - logger(LOG_ERR, _("Unauthorized request from %s (%s)"), c->name, + logger(LOG_ERR, "Unauthorized request from %s (%s)", c->name, c->hostname); return false; } @@ -167,12 +155,12 @@ bool receive_request(connection_t *c) if(!request_handlers[request](c)) { /* Something went wrong. Probably scriptkiddies. Terminate. */ - logger(LOG_ERR, _("Error while processing %s from %s (%s)"), + logger(LOG_ERR, "Error while processing %s from %s (%s)", request_name[request], c->name, c->hostname); return false; } } else { - logger(LOG_ERR, _("Bogus data received from %s (%s)"), + logger(LOG_ERR, "Bogus data received from %s (%s)", c->name, c->hostname); return false; } @@ -180,45 +168,32 @@ bool receive_request(connection_t *c) return true; } -static int past_request_compare(const past_request_t *a, const past_request_t *b) -{ +static int past_request_compare(const past_request_t *a, const past_request_t *b) { return strcmp(a->request, b->request); } -static void free_past_request(past_request_t *r) -{ - cp(); - +static void free_past_request(past_request_t *r) { if(r->request) free(r->request); free(r); } -void init_requests(void) -{ - cp(); - +void init_requests(void) { past_request_tree = avl_alloc_tree((avl_compare_t) past_request_compare, (avl_action_t) free_past_request); } -void exit_requests(void) -{ - cp(); - +void exit_requests(void) { avl_delete_tree(past_request_tree); } -bool seen_request(char *request) -{ +bool seen_request(char *request) { past_request_t *new, p = {0}; - cp(); - p.request = request; if(avl_search(past_request_tree, &p)) { - ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Already seen request")); + ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Already seen request"); return true; } else { new = xmalloc(sizeof(*new)); @@ -229,14 +204,11 @@ bool seen_request(char *request) } } -void age_past_requests(void) -{ +void age_past_requests(void) { avl_node_t *node, *next; past_request_t *p; int left = 0, deleted = 0; - cp(); - for(node = past_request_tree->head; node; node = next) { next = node->next; p = node->data; @@ -248,6 +220,6 @@ void age_past_requests(void) } if(left || deleted) - ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Aging past requests: deleted %d, left %d"), + ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Aging past requests: deleted %d, left %d", deleted, left); } diff --git a/src/protocol.h b/src/protocol.h index bacb60c..e611f6e 100644 --- a/src/protocol.h +++ b/src/protocol.h @@ -1,7 +1,7 @@ /* protocol.h -- header for protocol.c Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: protocol.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_PROTOCOL_H__ @@ -97,9 +95,9 @@ extern bool send_add_subnet(struct connection_t *, const struct subnet_t *); extern bool send_del_subnet(struct connection_t *, const struct subnet_t *); extern bool send_add_edge(struct connection_t *, const struct edge_t *); extern bool send_del_edge(struct connection_t *, const struct edge_t *); -extern bool send_key_changed(struct connection_t *, const struct node_t *); -extern bool send_req_key(struct connection_t *, const struct node_t *, const struct node_t *); -extern bool send_ans_key(struct connection_t *, const struct node_t *, const struct node_t *); +extern bool send_key_changed(); +extern bool send_req_key(struct node_t *); +extern bool send_ans_key(struct node_t *); extern bool send_tcppacket(struct connection_t *, struct vpn_packet_t *); /* Request handlers */ diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 7eef800..24f591a 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -1,7 +1,7 @@ /* protocol_auth.c -- handle the meta-protocol, authentication Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: protocol_auth.c 1596 2008-12-22 20:35:45Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -40,22 +38,16 @@ #include "utils.h" #include "xalloc.h" -bool send_id(connection_t *c) -{ - cp(); - +bool send_id(connection_t *c) { return send_request(c, "%d %s %d", ID, myself->connection->name, myself->connection->protocol_version); } -bool id_h(connection_t *c) -{ +bool id_h(connection_t *c) { char name[MAX_STRING_SIZE]; - cp(); - if(sscanf(c->buffer, "%*d " MAX_STRING " %d", name, &c->protocol_version) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ID", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "ID", c->name, c->hostname); return false; } @@ -63,7 +55,7 @@ bool id_h(connection_t *c) /* Check if identity is a valid name */ if(!check_id(name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ID", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ID", c->name, c->hostname, "invalid name"); return false; } @@ -72,7 +64,7 @@ bool id_h(connection_t *c) if(c->outgoing) { if(strcmp(c->name, name)) { - logger(LOG_ERR, _("Peer %s is %s instead of %s"), c->hostname, name, + logger(LOG_ERR, "Peer %s is %s instead of %s", c->hostname, name, c->name); return false; } @@ -85,7 +77,7 @@ bool id_h(connection_t *c) /* Check if version matches */ if(c->protocol_version != myself->connection->protocol_version) { - logger(LOG_ERR, _("Peer %s (%s) uses incompatible version %d"), + logger(LOG_ERR, "Peer %s (%s) uses incompatible version %d", c->name, c->hostname, c->protocol_version); return false; } @@ -101,7 +93,7 @@ bool id_h(connection_t *c) init_configuration(&c->config_tree); if(!read_connection_config(c)) { - logger(LOG_ERR, _("Peer %s had unknown identity (%s)"), c->hostname, + logger(LOG_ERR, "Peer %s had unknown identity (%s)", c->hostname, c->name); return false; } @@ -116,26 +108,22 @@ bool id_h(connection_t *c) return send_metakey(c); } -bool send_metakey(connection_t *c) -{ +bool send_metakey(connection_t *c) { char *buffer; int len; bool x; - cp(); - len = RSA_size(c->rsa_key); /* Allocate buffers for the meta key */ buffer = alloca(2 * len + 1); - if(!c->outkey) - c->outkey = xmalloc(len); + c->outkey = xrealloc(c->outkey, len); if(!c->outctx) c->outctx = xmalloc_and_zero(sizeof(*c->outctx)); - cp(); + /* Copy random data to the buffer */ RAND_pseudo_bytes((unsigned char *)c->outkey, len); @@ -155,7 +143,7 @@ bool send_metakey(connection_t *c) ifdebug(SCARY_THINGS) { bin2hex(c->outkey, buffer, len); buffer[len * 2] = '\0'; - logger(LOG_DEBUG, _("Generated random meta key (unencrypted): %s"), + logger(LOG_DEBUG, "Generated random meta key (unencrypted): %s", buffer); } @@ -167,7 +155,7 @@ bool send_metakey(connection_t *c) */ if(RSA_public_encrypt(len, (unsigned char *)c->outkey, (unsigned char *)buffer, c->rsa_key, RSA_NO_PADDING) != len) { - logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"), + logger(LOG_ERR, "Error during encryption of meta key for %s (%s)", c->name, c->hostname); return false; } @@ -191,7 +179,7 @@ bool send_metakey(connection_t *c) (unsigned char *)c->outkey + len - c->outcipher->key_len, (unsigned char *)c->outkey + len - c->outcipher->key_len - c->outcipher->iv_len)) { - logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"), + logger(LOG_ERR, "Error during initialisation of cipher for %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } @@ -202,16 +190,13 @@ bool send_metakey(connection_t *c) return x; } -bool metakey_h(connection_t *c) -{ +bool metakey_h(connection_t *c) { char buffer[MAX_STRING_SIZE]; int cipher, digest, maclength, compression; int len; - cp(); - if(sscanf(c->buffer, "%*d %d %d %d %d " MAX_STRING, &cipher, &digest, &maclength, &compression, buffer) != 5) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "METAKEY", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "METAKEY", c->name, c->hostname); return false; } @@ -221,14 +206,13 @@ bool metakey_h(connection_t *c) /* Check if the length of the meta key is all right */ if(strlen(buffer) != len * 2) { - logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, c->hostname, "wrong keylength"); + logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name, c->hostname, "wrong keylength"); return false; } /* Allocate buffers for the meta key */ - if(!c->inkey) - c->inkey = xmalloc(len); + c->inkey = xrealloc(c->inkey, len); if(!c->inctx) c->inctx = xmalloc_and_zero(sizeof(*c->inctx)); @@ -240,7 +224,7 @@ bool metakey_h(connection_t *c) /* Decrypt the meta key */ if(RSA_private_decrypt(len, (unsigned char *)buffer, (unsigned char *)c->inkey, myself->connection->rsa_key, RSA_NO_PADDING) != len) { /* See challenge() */ - logger(LOG_ERR, _("Error during decryption of meta key for %s (%s)"), + logger(LOG_ERR, "Error during decryption of meta key for %s (%s)", c->name, c->hostname); return false; } @@ -248,7 +232,7 @@ bool metakey_h(connection_t *c) ifdebug(SCARY_THINGS) { bin2hex(c->inkey, buffer, len); buffer[len * 2] = '\0'; - logger(LOG_DEBUG, _("Received random meta key (unencrypted): %s"), buffer); + logger(LOG_DEBUG, "Received random meta key (unencrypted): %s", buffer); } /* All incoming requests will now be encrypted. */ @@ -259,7 +243,7 @@ bool metakey_h(connection_t *c) c->incipher = EVP_get_cipherbynid(cipher); if(!c->incipher) { - logger(LOG_ERR, _("%s (%s) uses unknown cipher!"), c->name, c->hostname); + logger(LOG_ERR, "%s (%s) uses unknown cipher!", c->name, c->hostname); return false; } @@ -267,7 +251,7 @@ bool metakey_h(connection_t *c) (unsigned char *)c->inkey + len - c->incipher->key_len, (unsigned char *)c->inkey + len - c->incipher->key_len - c->incipher->iv_len)) { - logger(LOG_ERR, _("Error during initialisation of cipher from %s (%s): %s"), + logger(LOG_ERR, "Error during initialisation of cipher from %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } @@ -283,12 +267,12 @@ bool metakey_h(connection_t *c) c->indigest = EVP_get_digestbynid(digest); if(!c->indigest) { - logger(LOG_ERR, _("Node %s (%s) uses unknown digest!"), c->name, c->hostname); + logger(LOG_ERR, "Node %s (%s) uses unknown digest!", c->name, c->hostname); return false; } if(c->inmaclength > c->indigest->md_size || c->inmaclength < 0) { - logger(LOG_ERR, _("%s (%s) uses bogus MAC length!"), c->name, c->hostname); + logger(LOG_ERR, "%s (%s) uses bogus MAC length!", c->name, c->hostname); return false; } } else { @@ -302,13 +286,10 @@ bool metakey_h(connection_t *c) return send_challenge(c); } -bool send_challenge(connection_t *c) -{ +bool send_challenge(connection_t *c) { char *buffer; int len; - cp(); - /* CHECKME: what is most reasonable value for len? */ len = RSA_size(c->rsa_key); @@ -317,8 +298,7 @@ bool send_challenge(connection_t *c) buffer = alloca(2 * len + 1); - if(!c->hischallenge) - c->hischallenge = xmalloc(len); + c->hischallenge = xrealloc(c->hischallenge, len); /* Copy random data to the buffer */ @@ -334,15 +314,12 @@ bool send_challenge(connection_t *c) return send_request(c, "%d %s", CHALLENGE, buffer); } -bool challenge_h(connection_t *c) -{ +bool challenge_h(connection_t *c) { char buffer[MAX_STRING_SIZE]; int len; - cp(); - if(sscanf(c->buffer, "%*d " MAX_STRING, buffer) != 1) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "CHALLENGE", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "CHALLENGE", c->name, c->hostname); return false; } @@ -352,15 +329,14 @@ bool challenge_h(connection_t *c) /* Check if the length of the challenge is all right */ if(strlen(buffer) != len * 2) { - logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, + logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name, c->hostname, "wrong challenge length"); return false; } /* Allocate buffers for the challenge */ - if(!c->mychallenge) - c->mychallenge = xmalloc(len); + c->mychallenge = xrealloc(c->mychallenge, len); /* Convert the challenge from hexadecimal back to binary */ @@ -373,19 +349,16 @@ bool challenge_h(connection_t *c) return send_chal_reply(c); } -bool send_chal_reply(connection_t *c) -{ +bool send_chal_reply(connection_t *c) { char hash[EVP_MAX_MD_SIZE * 2 + 1]; EVP_MD_CTX ctx; - cp(); - /* Calculate the hash from the challenge we received */ if(!EVP_DigestInit(&ctx, c->indigest) || !EVP_DigestUpdate(&ctx, c->mychallenge, RSA_size(myself->connection->rsa_key)) || !EVP_DigestFinal(&ctx, (unsigned char *)hash, NULL)) { - logger(LOG_ERR, _("Error during calculation of response for %s (%s): %s"), + logger(LOG_ERR, "Error during calculation of response for %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } @@ -400,16 +373,13 @@ bool send_chal_reply(connection_t *c) return send_request(c, "%d %s", CHAL_REPLY, hash); } -bool chal_reply_h(connection_t *c) -{ +bool chal_reply_h(connection_t *c) { char hishash[MAX_STRING_SIZE]; char myhash[EVP_MAX_MD_SIZE]; EVP_MD_CTX ctx; - cp(); - if(sscanf(c->buffer, "%*d " MAX_STRING, hishash) != 1) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "CHAL_REPLY", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "CHAL_REPLY", c->name, c->hostname); return false; } @@ -417,8 +387,8 @@ bool chal_reply_h(connection_t *c) /* Check if the length of the hash is all right */ if(strlen(hishash) != c->outdigest->md_size * 2) { - logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, - c->hostname, _("wrong challenge reply length")); + logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name, + c->hostname, "wrong challenge reply length"); return false; } @@ -431,7 +401,7 @@ bool chal_reply_h(connection_t *c) if(!EVP_DigestInit(&ctx, c->outdigest) || !EVP_DigestUpdate(&ctx, c->hischallenge, RSA_size(c->rsa_key)) || !EVP_DigestFinal(&ctx, (unsigned char *)myhash, NULL)) { - logger(LOG_ERR, _("Error during calculation of response from %s (%s): %s"), + logger(LOG_ERR, "Error during calculation of response from %s (%s): %s", c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } @@ -439,13 +409,13 @@ bool chal_reply_h(connection_t *c) /* Verify the incoming hash with the calculated hash */ if(memcmp(hishash, myhash, c->outdigest->md_size)) { - logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, - c->hostname, _("wrong challenge reply")); + logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name, + c->hostname, "wrong challenge reply"); ifdebug(SCARY_THINGS) { bin2hex(myhash, hishash, SHA_DIGEST_LENGTH); hishash[SHA_DIGEST_LENGTH * 2] = '\0'; - logger(LOG_DEBUG, _("Expected challenge reply: %s"), hishash); + logger(LOG_DEBUG, "Expected challenge reply: %s", hishash); } return false; @@ -460,16 +430,13 @@ bool chal_reply_h(connection_t *c) return send_ack(c); } -bool send_ack(connection_t *c) -{ +bool send_ack(connection_t *c) { /* ACK message contains rest of the information the other end needs to create node_t and edge_t structures. */ struct timeval now; bool choice; - cp(); - /* Estimate weight */ gettimeofday(&now, NULL); @@ -483,7 +450,7 @@ bool send_ack(connection_t *c) if((get_config_bool(lookup_config(c->config_tree, "TCPOnly"), &choice) && choice) || myself->options & OPTION_TCPONLY) c->options |= OPTION_TCPONLY | OPTION_INDIRECT; - if((!get_config_bool(lookup_config(c->config_tree, "PMTUDiscovery"), &choice) || choice) || myself->options & OPTION_PMTU_DISCOVERY) + if(myself->options & OPTION_PMTU_DISCOVERY) c->options |= OPTION_PMTU_DISCOVERY; get_config_int(lookup_config(c->config_tree, "Weight"), &c->estimated_weight); @@ -491,8 +458,7 @@ bool send_ack(connection_t *c) return send_request(c, "%d %s %d %lx", ACK, myport, c->estimated_weight, c->options); } -static void send_everything(connection_t *c) -{ +static void send_everything(connection_t *c) { avl_node_t *node, *node2; node_t *n; subnet_t *s; @@ -524,18 +490,15 @@ static void send_everything(connection_t *c) } } -bool ack_h(connection_t *c) -{ +bool ack_h(connection_t *c) { char hisport[MAX_STRING_SIZE]; char *hisaddress, *dummy; int weight, mtu; long int options; node_t *n; - cp(); - if(sscanf(c->buffer, "%*d " MAX_STRING " %d %lx", hisport, &weight, &options) != 3) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ACK", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "ACK", c->name, c->hostname); return false; } @@ -551,7 +514,7 @@ bool ack_h(connection_t *c) } else { if(n->connection) { /* Oh dear, we already have a connection to this node. */ - ifdebug(CONNECTIONS) logger(LOG_DEBUG, _("Established a second connection with %s (%s), closing old connection"), + ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Established a second connection with %s (%s), closing old connection", n->name, n->hostname); terminate_connection(n->connection, false); /* Run graph algorithm to purge key and make sure up/down scripts are rerun with new IP addresses and stuff */ @@ -561,6 +524,10 @@ bool ack_h(connection_t *c) n->connection = c; c->node = n; + if(!(c->options & options & OPTION_PMTU_DISCOVERY)) { + c->options &= ~OPTION_PMTU_DISCOVERY; + options &= ~OPTION_PMTU_DISCOVERY; + } c->options |= options; if(get_config_int(lookup_config(c->config_tree, "PMTU"), &mtu) && mtu < n->mtu) @@ -574,7 +541,7 @@ bool ack_h(connection_t *c) c->allow_request = ALL; c->status.active = true; - ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection with %s (%s) activated"), c->name, + ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection with %s (%s) activated", c->name, c->hostname); /* Send him everything we know */ @@ -584,7 +551,6 @@ bool ack_h(connection_t *c) /* Create an edge_t for this connection */ c->edge = new_edge(); - cp(); c->edge->from = myself; c->edge->to = n; sockaddr2str(&c->address, &hisaddress, &dummy); diff --git a/src/protocol_edge.c b/src/protocol_edge.c index 0a87b59..9d43922 100644 --- a/src/protocol_edge.c +++ b/src/protocol_edge.c @@ -1,7 +1,8 @@ /* protocol_edge.c -- handle the meta-protocol, edges Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen + 2009 Michael Tokarev 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 @@ -13,11 +14,9 @@ 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. - - $Id: protocol_edge.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -36,16 +35,13 @@ #include "utils.h" #include "xalloc.h" -bool send_add_edge(connection_t *c, const edge_t *e) -{ +bool send_add_edge(connection_t *c, const edge_t *e) { bool x; char *address, *port; - cp(); - sockaddr2str(&e->address, &address, &port); - x = send_request(c, "%d %lx %s %s %s %s %lx %d", ADD_EDGE, random(), + x = send_request(c, "%d %x %s %s %s %s %lx %d", ADD_EDGE, rand(), e->from->name, e->to->name, address, port, e->options, e->weight); free(address); @@ -54,8 +50,7 @@ bool send_add_edge(connection_t *c, const edge_t *e) return x; } -bool add_edge_h(connection_t *c) -{ +bool add_edge_h(connection_t *c) { edge_t *e; node_t *from, *to; char from_name[MAX_STRING_SIZE]; @@ -66,26 +61,18 @@ bool add_edge_h(connection_t *c) long int options; int weight; - cp(); - if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING" "MAX_STRING" "MAX_STRING" %lx %d", from_name, to_name, to_address, to_port, &options, &weight) != 6) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ADD_EDGE", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "ADD_EDGE", c->name, c->hostname); return false; } /* Check if names are valid */ - if(!check_id(from_name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_EDGE", c->name, - c->hostname, _("invalid name")); - return false; - } - - if(!check_id(to_name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_EDGE", c->name, - c->hostname, _("invalid name")); + if(!check_id(from_name) || !check_id(to_name)) { + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_EDGE", c->name, + c->hostname, "invalid name"); return false; } @@ -95,6 +82,17 @@ bool add_edge_h(connection_t *c) /* Lookup nodes */ from = lookup_node(from_name); + to = lookup_node(to_name); + + if(tunnelserver && + from != myself && from != c->node && + to != myself && to != c->node) { + /* ignore indirect edge registrations for tunnelserver */ + ifdebug(PROTOCOL) logger(LOG_WARNING, + "Ignoring indirect %s from %s (%s)", + "ADD_EDGE", c->name, c->hostname); + return true; + } if(!from) { from = new_node(); @@ -102,16 +100,12 @@ bool add_edge_h(connection_t *c) node_add(from); } - to = lookup_node(to_name); - if(!to) { to = new_node(); to->name = xstrdup(to_name); node_add(to); } - if(tunnelserver && from != myself && from != c->node && to != myself && to != c->node) - return false; /* Convert addresses */ @@ -124,12 +118,12 @@ bool add_edge_h(connection_t *c) if(e) { if(e->weight != weight || e->options != options || sockaddrcmp(&e->address, &address)) { if(from == myself) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself which does not match existing entry"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself which does not match existing entry", "ADD_EDGE", c->name, c->hostname); send_add_edge(c, e); return true; } else { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) which does not match existing entry"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) which does not match existing entry", "ADD_EDGE", c->name, c->hostname); edge_del(e); graph(); @@ -137,7 +131,7 @@ bool add_edge_h(connection_t *c) } else return true; } else if(from == myself) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself which does not exist"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself which does not exist", "ADD_EDGE", c->name, c->hostname); e = new_edge(); e->from = from; @@ -167,40 +161,28 @@ bool add_edge_h(connection_t *c) return true; } -bool send_del_edge(connection_t *c, const edge_t *e) -{ - cp(); - - return send_request(c, "%d %lx %s %s", DEL_EDGE, random(), +bool send_del_edge(connection_t *c, const edge_t *e) { + return send_request(c, "%d %x %s %s", DEL_EDGE, rand(), e->from->name, e->to->name); } -bool del_edge_h(connection_t *c) -{ +bool del_edge_h(connection_t *c) { edge_t *e; char from_name[MAX_STRING_SIZE]; char to_name[MAX_STRING_SIZE]; node_t *from, *to; - cp(); - if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING, from_name, to_name) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "DEL_EDGE", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "DEL_EDGE", c->name, c->hostname); return false; } /* Check if names are valid */ - if(!check_id(from_name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_EDGE", c->name, - c->hostname, _("invalid name")); - return false; - } - - if(!check_id(to_name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_EDGE", c->name, - c->hostname, _("invalid name")); + if(!check_id(from_name) || !check_id(to_name)) { + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_EDGE", c->name, + c->hostname, "invalid name"); return false; } @@ -210,36 +192,42 @@ bool del_edge_h(connection_t *c) /* Lookup nodes */ from = lookup_node(from_name); - - if(!from) { - ifdebug(PROTOCOL) logger(LOG_ERR, _("Got %s from %s (%s) which does not appear in the edge tree"), - "DEL_EDGE", c->name, c->hostname); - return true; - } - to = lookup_node(to_name); - if(!to) { - ifdebug(PROTOCOL) logger(LOG_ERR, _("Got %s from %s (%s) which does not appear in the edge tree"), + if(tunnelserver && + from != myself && from != c->node && + to != myself && to != c->node) { + /* ignore indirect edge registrations for tunnelserver */ + ifdebug(PROTOCOL) logger(LOG_WARNING, + "Ignoring indirect %s from %s (%s)", + "DEL_EDGE", c->name, c->hostname); + return true; + } + + if(!from) { + ifdebug(PROTOCOL) logger(LOG_ERR, "Got %s from %s (%s) which does not appear in the edge tree", "DEL_EDGE", c->name, c->hostname); return true; } - if(tunnelserver && from != myself && from != c->node && to != myself && to != c->node) - return false; + if(!to) { + ifdebug(PROTOCOL) logger(LOG_ERR, "Got %s from %s (%s) which does not appear in the edge tree", + "DEL_EDGE", c->name, c->hostname); + return true; + } /* Check if edge exists */ e = lookup_edge(from, to); if(!e) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) which does not appear in the edge tree"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) which does not appear in the edge tree", "DEL_EDGE", c->name, c->hostname); return true; } if(e->from == myself) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself", "DEL_EDGE", c->name, c->hostname); send_add_edge(c, e); /* Send back a correction */ return true; diff --git a/src/protocol_key.c b/src/protocol_key.c index e8ea1b1..92948aa 100644 --- a/src/protocol_key.c +++ b/src/protocol_key.c @@ -1,7 +1,7 @@ /* protocol_key.c -- handle the meta-protocol, key exchange Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,17 +13,16 @@ 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. - - $Id: protocol_key.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" #include #include +#include #include "avl_tree.h" #include "connection.h" @@ -37,29 +36,23 @@ bool mykeyused = false; -bool send_key_changed(connection_t *c, const node_t *n) -{ - cp(); - +bool send_key_changed() { /* Only send this message if some other daemon requested our key previously. This reduces unnecessary key_changed broadcasts. */ - if(n == myself && !mykeyused) + if(!mykeyused) return true; - return send_request(c, "%d %lx %s", KEY_CHANGED, random(), n->name); + return send_request(broadcast, "%d %x %s", KEY_CHANGED, rand(), myself->name); } -bool key_changed_h(connection_t *c) -{ +bool key_changed_h(connection_t *c) { char name[MAX_STRING_SIZE]; node_t *n; - cp(); - if(sscanf(c->buffer, "%*d %*x " MAX_STRING, name) != 1) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "KEY_CHANGED", + logger(LOG_ERR, "Got bad %s from %s (%s)", "KEY_CHANGED", c->name, c->hostname); return false; } @@ -70,7 +63,7 @@ bool key_changed_h(connection_t *c) n = lookup_node(name); if(!n) { - logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist"), + logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist", "KEY_CHANGED", c->name, c->hostname, name); return false; } @@ -86,23 +79,17 @@ bool key_changed_h(connection_t *c) return true; } -bool send_req_key(connection_t *c, const node_t *from, const node_t *to) -{ - cp(); - - return send_request(c, "%d %s %s", REQ_KEY, from->name, to->name); +bool send_req_key(node_t *to) { + return send_request(to->nexthop->connection, "%d %s %s", REQ_KEY, myself->name, to->name); } -bool req_key_h(connection_t *c) -{ +bool req_key_h(connection_t *c) { char from_name[MAX_STRING_SIZE]; char to_name[MAX_STRING_SIZE]; node_t *from, *to; - cp(); - if(sscanf(c->buffer, "%*d " MAX_STRING " " MAX_STRING, from_name, to_name) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "REQ_KEY", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "REQ_KEY", c->name, c->hostname); return false; } @@ -110,7 +97,7 @@ bool req_key_h(connection_t *c) from = lookup_node(from_name); if(!from) { - logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist in our connection list"), + logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist in our connection list", "REQ_KEY", c->name, c->hostname, from_name); return false; } @@ -118,7 +105,7 @@ bool req_key_h(connection_t *c) to = lookup_node(to_name); if(!to) { - logger(LOG_ERR, _("Got %s from %s (%s) destination %s which does not exist in our connection list"), + logger(LOG_ERR, "Got %s from %s (%s) destination %s which does not exist in our connection list", "REQ_KEY", c->name, c->hostname, to_name); return false; } @@ -126,57 +113,69 @@ bool req_key_h(connection_t *c) /* Check if this key request is for us */ if(to == myself) { /* Yes, send our own key back */ - mykeyused = true; - from->received_seqno = 0; - memset(from->late, 0, sizeof(from->late)); - send_ans_key(c, myself, from); + send_ans_key(from); } else { if(tunnelserver) return false; if(!to->status.reachable) { - logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"), + logger(LOG_WARNING, "Got %s from %s (%s) destination %s which is not reachable", "REQ_KEY", c->name, c->hostname, to_name); return true; } - send_req_key(to->nexthop->connection, from, to); + send_request(to->nexthop->connection, "%s", c->buffer); } return true; } -bool send_ans_key(connection_t *c, const node_t *from, const node_t *to) -{ +bool send_ans_key(node_t *to) { char *key; - cp(); + // Set key parameters + to->incipher = myself->incipher; + to->inkeylength = myself->inkeylength; + to->indigest = myself->indigest; + to->inmaclength = myself->inmaclength; + to->incompression = myself->incompression; - key = alloca(2 * from->keylength + 1); - bin2hex(from->key, key, from->keylength); - key[from->keylength * 2] = '\0'; + // Allocate memory for key + to->inkey = xrealloc(to->inkey, to->inkeylength); - return send_request(c, "%d %s %s %s %d %d %d %d", ANS_KEY, - from->name, to->name, key, - from->cipher ? from->cipher->nid : 0, - from->digest ? from->digest->type : 0, from->maclength, - from->compression); + // Create a new key + RAND_pseudo_bytes((unsigned char *)to->inkey, to->inkeylength); + if(to->incipher) + EVP_DecryptInit_ex(&to->inctx, to->incipher, NULL, (unsigned char *)to->inkey, (unsigned char *)to->inkey + to->incipher->key_len); + + // Reset sequence number and late packet window + mykeyused = true; + to->received_seqno = 0; + memset(to->late, 0, sizeof(to->late)); + + // Convert to hexadecimal and send + key = alloca(2 * to->inkeylength + 1); + bin2hex(to->inkey, key, to->inkeylength); + key[to->inkeylength * 2] = '\0'; + + return send_request(to->nexthop->connection, "%d %s %s %s %d %d %d %d", ANS_KEY, + myself->name, to->name, key, + to->incipher ? to->incipher->nid : 0, + to->indigest ? to->indigest->type : 0, to->inmaclength, + to->incompression); } -bool ans_key_h(connection_t *c) -{ +bool ans_key_h(connection_t *c) { char from_name[MAX_STRING_SIZE]; char to_name[MAX_STRING_SIZE]; char key[MAX_STRING_SIZE]; int cipher, digest, maclength, compression; node_t *from, *to; - cp(); - if(sscanf(c->buffer, "%*d "MAX_STRING" "MAX_STRING" "MAX_STRING" %d %d %d %d", from_name, to_name, key, &cipher, &digest, &maclength, &compression) != 7) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ANS_KEY", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "ANS_KEY", c->name, c->hostname); return false; } @@ -184,7 +183,7 @@ bool ans_key_h(connection_t *c) from = lookup_node(from_name); if(!from) { - logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist in our connection list"), + logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist in our connection list", "ANS_KEY", c->name, c->hostname, from_name); return false; } @@ -192,7 +191,7 @@ bool ans_key_h(connection_t *c) to = lookup_node(to_name); if(!to) { - logger(LOG_ERR, _("Got %s from %s (%s) destination %s which does not exist in our connection list"), + logger(LOG_ERR, "Got %s from %s (%s) destination %s which does not exist in our connection list", "ANS_KEY", c->name, c->hostname, to_name); return false; } @@ -204,7 +203,7 @@ bool ans_key_h(connection_t *c) return false; if(!to->status.reachable) { - logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"), + logger(LOG_WARNING, "Got %s from %s (%s) destination %s which is not reachable", "ANS_KEY", c->name, c->hostname, to_name); return true; } @@ -213,77 +212,72 @@ bool ans_key_h(connection_t *c) } /* Update our copy of the origin's packet key */ + from->outkey = xrealloc(from->outkey, strlen(key) / 2); - if(from->key) - free(from->key); + from->outkey = xstrdup(key); + from->outkeylength = strlen(key) / 2; + hex2bin(key, from->outkey, from->outkeylength); - from->key = xstrdup(key); - from->keylength = strlen(key) / 2; - hex2bin(from->key, from->key, from->keylength); - from->key[from->keylength] = '\0'; - - from->status.validkey = true; from->status.waitingforkey = false; - from->sent_seqno = 0; - /* Check and lookup cipher and digest algorithms */ if(cipher) { - from->cipher = EVP_get_cipherbynid(cipher); + from->outcipher = EVP_get_cipherbynid(cipher); - if(!from->cipher) { - logger(LOG_ERR, _("Node %s (%s) uses unknown cipher!"), from->name, + if(!from->outcipher) { + logger(LOG_ERR, "Node %s (%s) uses unknown cipher!", from->name, from->hostname); return false; } - if(from->keylength != from->cipher->key_len + from->cipher->iv_len) { - logger(LOG_ERR, _("Node %s (%s) uses wrong keylength!"), from->name, + if(from->outkeylength != from->outcipher->key_len + from->outcipher->iv_len) { + logger(LOG_ERR, "Node %s (%s) uses wrong keylength!", from->name, from->hostname); return false; } } else { - from->cipher = NULL; + from->outcipher = NULL; } - from->maclength = maclength; + from->outmaclength = maclength; if(digest) { - from->digest = EVP_get_digestbynid(digest); + from->outdigest = EVP_get_digestbynid(digest); - if(!from->digest) { - logger(LOG_ERR, _("Node %s (%s) uses unknown digest!"), from->name, + if(!from->outdigest) { + logger(LOG_ERR, "Node %s (%s) uses unknown digest!", from->name, from->hostname); return false; } - if(from->maclength > from->digest->md_size || from->maclength < 0) { - logger(LOG_ERR, _("Node %s (%s) uses bogus MAC length!"), + if(from->outmaclength > from->outdigest->md_size || from->outmaclength < 0) { + logger(LOG_ERR, "Node %s (%s) uses bogus MAC length!", from->name, from->hostname); return false; } } else { - from->digest = NULL; + from->outdigest = NULL; } if(compression < 0 || compression > 11) { - logger(LOG_ERR, _("Node %s (%s) uses bogus compression level!"), from->name, from->hostname); + logger(LOG_ERR, "Node %s (%s) uses bogus compression level!", from->name, from->hostname); return false; } - from->compression = compression; + from->outcompression = compression; - if(from->cipher) - if(!EVP_EncryptInit_ex(&from->packet_ctx, from->cipher, NULL, (unsigned char *)from->key, (unsigned char *)from->key + from->cipher->key_len)) { - logger(LOG_ERR, _("Error during initialisation of key from %s (%s): %s"), + if(from->outcipher) + if(!EVP_EncryptInit_ex(&from->outctx, from->outcipher, NULL, (unsigned char *)from->outkey, (unsigned char *)from->outkey + from->outcipher->key_len)) { + logger(LOG_ERR, "Error during initialisation of key from %s (%s): %s", from->name, from->hostname, ERR_error_string(ERR_get_error(), NULL)); return false; } + from->status.validkey = true; + from->sent_seqno = 0; + if(from->options & OPTION_PMTU_DISCOVERY && !from->mtuprobes) send_mtu_probe(from); - flush_queue(from); - return true; } diff --git a/src/protocol_misc.c b/src/protocol_misc.c index 95ab5c6..28571ef 100644 --- a/src/protocol_misc.c +++ b/src/protocol_misc.c @@ -1,7 +1,7 @@ /* protocol_misc.c -- handle the meta-protocol, miscellaneous functions Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: protocol_misc.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -35,59 +33,47 @@ int maxoutbufsize = 0; /* Status and error notification routines */ -bool send_status(connection_t *c, int statusno, const char *statusstring) -{ - cp(); - +bool send_status(connection_t *c, int statusno, const char *statusstring) { if(!statusstring) statusstring = "Status"; return send_request(c, "%d %d %s", STATUS, statusno, statusstring); } -bool status_h(connection_t *c) -{ +bool status_h(connection_t *c) { int statusno; char statusstring[MAX_STRING_SIZE]; - cp(); - if(sscanf(c->buffer, "%*d %d " MAX_STRING, &statusno, statusstring) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "STATUS", + logger(LOG_ERR, "Got bad %s from %s (%s)", "STATUS", c->name, c->hostname); return false; } - ifdebug(STATUS) logger(LOG_NOTICE, _("Status message from %s (%s): %d: %s"), + ifdebug(STATUS) logger(LOG_NOTICE, "Status message from %s (%s): %d: %s", c->name, c->hostname, statusno, statusstring); return true; } -bool send_error(connection_t *c, int err, const char *errstring) -{ - cp(); - +bool send_error(connection_t *c, int err, const char *errstring) { if(!errstring) errstring = "Error"; return send_request(c, "%d %d %s", ERROR, err, errstring); } -bool error_h(connection_t *c) -{ +bool error_h(connection_t *c) { int err; char errorstring[MAX_STRING_SIZE]; - cp(); - if(sscanf(c->buffer, "%*d %d " MAX_STRING, &err, errorstring) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ERROR", + logger(LOG_ERR, "Got bad %s from %s (%s)", "ERROR", c->name, c->hostname); return false; } - ifdebug(ERROR) logger(LOG_NOTICE, _("Error message from %s (%s): %d: %s"), + ifdebug(ERROR) logger(LOG_NOTICE, "Error message from %s (%s): %d: %s", c->name, c->hostname, err, errorstring); terminate_connection(c, c->status.active); @@ -95,50 +81,32 @@ bool error_h(connection_t *c) return true; } -bool send_termreq(connection_t *c) -{ - cp(); - +bool send_termreq(connection_t *c) { return send_request(c, "%d", TERMREQ); } -bool termreq_h(connection_t *c) -{ - cp(); - +bool termreq_h(connection_t *c) { terminate_connection(c, c->status.active); return true; } -bool send_ping(connection_t *c) -{ - cp(); - +bool send_ping(connection_t *c) { c->status.pinged = true; c->last_ping_time = now; return send_request(c, "%d", PING); } -bool ping_h(connection_t *c) -{ - cp(); - +bool ping_h(connection_t *c) { return send_pong(c); } -bool send_pong(connection_t *c) -{ - cp(); - +bool send_pong(connection_t *c) { return send_request(c, "%d", PONG); } -bool pong_h(connection_t *c) -{ - cp(); - +bool pong_h(connection_t *c) { c->status.pinged = false; /* Succesful connection, reset timeout if this is an outgoing connection. */ @@ -151,13 +119,11 @@ bool pong_h(connection_t *c) /* Sending and receiving packets via TCP */ -bool send_tcppacket(connection_t *c, vpn_packet_t *packet) -{ - cp(); +bool send_tcppacket(connection_t *c, vpn_packet_t *packet) { + /* If there already is a lot of data in the outbuf buffer, discard this packet. + We use a very simple Random Early Drop algorithm. */ - /* If there already is a lot of data in the outbuf buffer, discard this packet. */ - - if(c->outbuflen > maxoutbufsize) + if(2.0 * c->outbuflen / (float)maxoutbufsize - 1 > (float)rand()/(float)RAND_MAX) return true; if(!send_request(c, "%d %hd", PACKET, packet->len)) @@ -166,14 +132,11 @@ bool send_tcppacket(connection_t *c, vpn_packet_t *packet) return send_meta(c, (char *)packet->data, packet->len); } -bool tcppacket_h(connection_t *c) -{ +bool tcppacket_h(connection_t *c) { short int len; - cp(); - if(sscanf(c->buffer, "%*d %hd", &len) != 1) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "PACKET", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "PACKET", c->name, c->hostname); return false; } diff --git a/src/protocol_subnet.c b/src/protocol_subnet.c index db06825..f7ce53b 100644 --- a/src/protocol_subnet.c +++ b/src/protocol_subnet.c @@ -1,7 +1,8 @@ /* protocol_subnet.c -- handle the meta-protocol, subnets Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen + 2009 Michael Tokarev 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 @@ -13,11 +14,9 @@ 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. - - $Id: protocol_subnet.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -33,46 +32,40 @@ #include "utils.h" #include "xalloc.h" -bool send_add_subnet(connection_t *c, const subnet_t *subnet) -{ +bool send_add_subnet(connection_t *c, const subnet_t *subnet) { char netstr[MAXNETSTR]; - cp(); - if(!net2str(netstr, sizeof netstr, subnet)) return false; - return send_request(c, "%d %lx %s %s", ADD_SUBNET, random(), subnet->owner->name, netstr); + return send_request(c, "%d %x %s %s", ADD_SUBNET, rand(), subnet->owner->name, netstr); } -bool add_subnet_h(connection_t *c) -{ +bool add_subnet_h(connection_t *c) { char subnetstr[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; node_t *owner; subnet_t s = {0}, *new; - cp(); - if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ADD_SUBNET", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "ADD_SUBNET", c->name, c->hostname); return false; } - /* Check if owner name is a valid */ + /* Check if owner name is valid */ if(!check_id(name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_SUBNET", c->name, - c->hostname, _("invalid name")); + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_SUBNET", c->name, + c->hostname, "invalid name"); return false; } /* Check if subnet string is valid */ if(!str2net(&s, subnetstr)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_SUBNET", c->name, - c->hostname, _("invalid subnet string")); + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_SUBNET", c->name, + c->hostname, "invalid subnet string"); return false; } @@ -83,15 +76,19 @@ bool add_subnet_h(connection_t *c) owner = lookup_node(name); + if(tunnelserver && owner != myself && owner != c->node) { + /* in case of tunnelserver, ignore indirect subnet registrations */ + ifdebug(PROTOCOL) logger(LOG_WARNING, "Ignoring indirect %s from %s (%s) for %s", + "ADD_SUBNET", c->name, c->hostname, subnetstr); + return true; + } + if(!owner) { owner = new_node(); owner->name = xstrdup(name); node_add(owner); } - if(tunnelserver && owner != myself && owner != c->node) - return false; - /* Check if we already know this subnet */ if(lookup_subnet(owner, &s)) @@ -100,7 +97,7 @@ bool add_subnet_h(connection_t *c) /* If we don't know this subnet, but we are the owner, retaliate with a DEL_SUBNET */ if(owner == myself) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself", "ADD_SUBNET", c->name, c->hostname); s.owner = myself; send_del_subnet(c, &s); @@ -115,7 +112,7 @@ bool add_subnet_h(connection_t *c) for(cfg = lookup_config(c->config_tree, "Subnet"); cfg; cfg = lookup_config_next(c->config_tree, cfg)) { if(!get_config_subnet(cfg, &allowed)) - return false; + continue; if(!subnet_compare(&s, allowed)) break; @@ -123,8 +120,11 @@ bool add_subnet_h(connection_t *c) free_subnet(allowed); } - if(!cfg) - return false; + if(!cfg) { + logger(LOG_WARNING, "Ignoring unauthorized %s from %s (%s): %s", + "ADD_SUBNET", c->name, c->hostname, subnetstr); + return true; + } free_subnet(allowed); } @@ -145,65 +145,63 @@ bool add_subnet_h(connection_t *c) return true; } -bool send_del_subnet(connection_t *c, const subnet_t *s) -{ +bool send_del_subnet(connection_t *c, const subnet_t *s) { char netstr[MAXNETSTR]; - cp(); - if(!net2str(netstr, sizeof netstr, s)) return false; - return send_request(c, "%d %lx %s %s", DEL_SUBNET, random(), s->owner->name, netstr); + return send_request(c, "%d %x %s %s", DEL_SUBNET, rand(), s->owner->name, netstr); } -bool del_subnet_h(connection_t *c) -{ +bool del_subnet_h(connection_t *c) { char subnetstr[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE]; node_t *owner; subnet_t s = {0}, *find; - cp(); - if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { - logger(LOG_ERR, _("Got bad %s from %s (%s)"), "DEL_SUBNET", c->name, + logger(LOG_ERR, "Got bad %s from %s (%s)", "DEL_SUBNET", c->name, c->hostname); return false; } - /* Check if owner name is a valid */ + /* Check if owner name is valid */ if(!check_id(name)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_SUBNET", c->name, - c->hostname, _("invalid name")); + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_SUBNET", c->name, + c->hostname, "invalid name"); return false; } - /* Check if the owner of the new subnet is in the connection list */ - - owner = lookup_node(name); - - if(!owner) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for %s which is not in our node tree"), - "DEL_SUBNET", c->name, c->hostname, name); - return true; - } - - if(tunnelserver && owner != myself && owner != c->node) - return false; - /* Check if subnet string is valid */ if(!str2net(&s, subnetstr)) { - logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_SUBNET", c->name, - c->hostname, _("invalid subnet string")); + logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_SUBNET", c->name, + c->hostname, "invalid subnet string"); return false; } if(seen_request(c->buffer)) return true; + /* Check if the owner of the subnet being deleted is in the connection list */ + + owner = lookup_node(name); + + if(tunnelserver && owner != myself && owner != c->node) { + /* in case of tunnelserver, ignore indirect subnet deletion */ + ifdebug(PROTOCOL) logger(LOG_WARNING, "Ignoring indirect %s from %s (%s) for %s", + "DEL_SUBNET", c->name, c->hostname, subnetstr); + return true; + } + + if(!owner) { + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for %s which is not in our node tree", + "DEL_SUBNET", c->name, c->hostname, name); + return true; + } + /* If everything is correct, delete the subnet from the list of the owner */ s.owner = owner; @@ -211,7 +209,7 @@ bool del_subnet_h(connection_t *c) find = lookup_subnet(owner, &s); if(!find) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for %s which does not appear in his subnet tree"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for %s which does not appear in his subnet tree", "DEL_SUBNET", c->name, c->hostname, name); return true; } @@ -219,7 +217,7 @@ bool del_subnet_h(connection_t *c) /* If we are the owner of this subnet, retaliate with an ADD_SUBNET */ if(owner == myself) { - ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), + ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself", "DEL_SUBNET", c->name, c->hostname); send_add_subnet(c, find); return true; diff --git a/src/raw_socket/device.c b/src/raw_socket/device.c index 376b3f0..30bb184 100644 --- a/src/raw_socket/device.c +++ b/src/raw_socket/device.c @@ -1,7 +1,7 @@ /* device.c -- raw socket Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2006 Guus Sliepen + 2002-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -29,34 +27,31 @@ #include "logger.h" #include "utils.h" #include "route.h" +#include "xalloc.h" int device_fd = -1; -char *device; -char *iface; -char ifrname[IFNAMSIZ]; -char *device_info; +char *device = NULL; +char *iface = NULL; +static char ifrname[IFNAMSIZ]; +static char *device_info; static int device_total_in = 0; static int device_total_out = 0; -bool setup_device(void) -{ +bool setup_device(void) { struct ifreq ifr; struct sockaddr_ll sa; - cp(); - - if(!get_config_string - (lookup_config(config_tree, "Interface"), &iface)) - iface = "eth0"; + if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) + iface = xstrdup("eth0"); if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - device = iface; + device = xstrdup(iface); - device_info = _("raw socket"); + device_info = "raw socket"; if((device_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) { - logger(LOG_ERR, _("Could not open %s: %s"), device_info, + logger(LOG_ERR, "Could not open %s: %s", device_info, strerror(errno)); return false; } @@ -65,7 +60,7 @@ bool setup_device(void) strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ); if(ioctl(device_fd, SIOCGIFINDEX, &ifr)) { close(device_fd); - logger(LOG_ERR, _("Can't find interface %s: %s"), iface, + logger(LOG_ERR, "Can't find interface %s: %s", iface, strerror(errno)); return false; } @@ -76,30 +71,27 @@ bool setup_device(void) sa.sll_ifindex = ifr.ifr_ifindex; if(bind(device_fd, (struct sockaddr *) &sa, (socklen_t) sizeof(sa))) { - logger(LOG_ERR, _("Could not bind %s to %s: %s"), device, iface, strerror(errno)); + logger(LOG_ERR, "Could not bind %s to %s: %s", device, iface, strerror(errno)); return false; } - logger(LOG_INFO, _("%s is a %s"), device, device_info); + logger(LOG_INFO, "%s is a %s", device, device_info); return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { close(device_fd); + + free(device); + free(iface); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - if((lenin = read(device_fd, packet->data, MTU)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -108,21 +100,18 @@ bool read_packet(vpn_packet_t *packet) device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; } -bool write_packet(vpn_packet_t *packet) -{ - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), +bool write_packet(vpn_packet_t *packet) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); if(write(device_fd, packet->data, packet->len) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -132,11 +121,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/route.c b/src/route.c index ae2e33c..2da781e 100644 --- a/src/route.c +++ b/src/route.c @@ -1,7 +1,7 @@ /* route.c -- routing Copyright (C) 2000-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: route.c 1601 2008-12-26 12:46:45Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -53,8 +51,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) -{ +static uint16_t inet_checksum(void *data, int len, uint16_t prevsum) { uint16_t *p = data; uint32_t checksum = prevsum ^ 0xFFFF; @@ -89,26 +86,30 @@ static bool ratelimit(int frequency) { static bool checklength(node_t *source, vpn_packet_t *packet, length_t length) { if(packet->len < length) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got too short packet from %s (%s)"), source->name, source->hostname); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Got too short packet from %s (%s)", source->name, source->hostname); return false; } else return true; } + +static void swap_mac_addresses(vpn_packet_t *packet) { + mac_t tmp; + memcpy(&tmp, &packet->data[0], sizeof tmp); + memcpy(&packet->data[0], &packet->data[6], sizeof tmp); + memcpy(&packet->data[6], &tmp, sizeof tmp); +} -static void learn_mac(mac_t *address) -{ +static void learn_mac(mac_t *address) { subnet_t *subnet; avl_node_t *node; connection_t *c; - cp(); - subnet = lookup_subnet_mac(address); /* If we don't know this MAC address yet, store it */ if(!subnet) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"), + ifdebug(TRAFFIC) logger(LOG_INFO, "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx", address->x[0], address->x[1], address->x[2], address->x[3], address->x[4], address->x[5]); @@ -131,14 +132,11 @@ static void learn_mac(mac_t *address) subnet->expires = now + macexpire; } -void age_subnets(void) -{ +void age_subnets(void) { subnet_t *s; connection_t *c; avl_node_t *node, *next, *node2; - cp(); - for(node = myself->subnet_tree->head; node; node = next) { next = node->next; s = node->data; @@ -146,7 +144,7 @@ void age_subnets(void) ifdebug(TRAFFIC) { char netstr[MAXNETSTR]; if(net2str(netstr, sizeof netstr, s)) - logger(LOG_INFO, _("Subnet %s expired"), netstr); + logger(LOG_INFO, "Subnet %s expired", netstr); } for(node2 = connection_tree->head; node2; node2 = node2->next) { @@ -160,44 +158,9 @@ void age_subnets(void) } } -static void route_mac(node_t *source, vpn_packet_t *packet) -{ - subnet_t *subnet; - mac_t dest; - - cp(); - - - /* Learn source address */ - - if(source == myself) { - mac_t src; - memcpy(&src, &packet->data[6], sizeof src); - learn_mac(&src); - } - - /* Lookup destination address */ - - memcpy(&dest, &packet->data[0], sizeof dest); - subnet = lookup_subnet_mac(&dest); - - if(!subnet) { - broadcast_packet(source, packet); - return; - } - - if(subnet->owner == source) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); - return; - } - - send_packet(subnet->owner, packet); -} - /* RFC 792 */ -static void route_ipv4_unreachable(node_t *source, vpn_packet_t *packet, uint8_t type, uint8_t code) -{ +static void route_ipv4_unreachable(node_t *source, vpn_packet_t *packet, uint8_t type, uint8_t code) { struct ip ip = {0}; struct icmp icmp = {0}; @@ -208,7 +171,9 @@ static void route_ipv4_unreachable(node_t *source, vpn_packet_t *packet, uint8_t if(ratelimit(3)) return; - cp(); + /* Swap Ethernet source and destination addresses */ + + swap_mac_addresses(packet); /* Copy headers from packet into properly aligned structs on the stack */ @@ -275,8 +240,6 @@ static void fragment_ipv4_packet(node_t *dest, vpn_packet_t *packet) { uint8_t *offset; uint16_t ip_off, origf; - cp(); - memcpy(&ip, packet->data + ether_size, ip_size); fragment.priority = packet->priority; @@ -286,11 +249,11 @@ static void fragment_ipv4_packet(node_t *dest, vpn_packet_t *packet) { todo = ntohs(ip.ip_len) - ip_size; if(ether_size + ip_size + todo != packet->len) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Length of packet (%d) doesn't match length in IPv4 header (%zd)"), packet->len, ether_size + ip_size + todo); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Length of packet (%d) doesn't match length in IPv4 header (%zd)", packet->len, ether_size + ip_size + todo); return; } - ifdebug(TRAFFIC) logger(LOG_INFO, _("Fragmenting packet of %d bytes to %s (%s)"), packet->len, dest->name, dest->hostname); + ifdebug(TRAFFIC) logger(LOG_INFO, "Fragmenting packet of %d bytes to %s (%s)", packet->len, dest->name, dest->hostname); offset = packet->data + ether_size + ip_size; maxlen = (dest->mtu - ether_size - ip_size) & ~0x7; @@ -318,19 +281,16 @@ static void fragment_ipv4_packet(node_t *dest, vpn_packet_t *packet) { } } -static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) -{ +static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) { subnet_t *subnet; node_t *via; ipv4_t dest; - cp(); - memcpy(&dest, &packet->data[30], sizeof dest); subnet = lookup_subnet_ipv4(&dest); if(!subnet) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%d"), + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%d", source->name, source->hostname, dest.x[0], dest.x[1], @@ -342,7 +302,7 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) } if(subnet->owner == source) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname); return; } @@ -355,7 +315,7 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; if(via && packet->len > via->mtu && via != myself) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("Packet for %s (%s) length %d larger than MTU %d"), subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); + ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); if(packet->data[20] & 0x40) { packet->len = via->mtu; route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED); @@ -369,18 +329,15 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) send_packet(subnet->owner, packet); } -static void route_ipv4(node_t *source, vpn_packet_t *packet) -{ - cp(); - +static void route_ipv4(node_t *source, vpn_packet_t *packet) { if(!checklength(source, packet, ether_size + ip_size)) return; - if(((packet->data[30] & 0xf0) == 0xe0) || + if(((packet->data[30] & 0xf0) == 0xe0) || ( packet->data[30] == 255 && packet->data[31] == 255 && packet->data[32] == 255 && - packet->data[33] == 255) + packet->data[33] == 255)) broadcast_packet(source, packet); else route_ipv4_unicast(source, packet); @@ -388,8 +345,7 @@ static void route_ipv4(node_t *source, vpn_packet_t *packet) /* RFC 2463 */ -static void route_ipv6_unreachable(node_t *source, vpn_packet_t *packet, uint8_t type, uint8_t code) -{ +static void route_ipv6_unreachable(node_t *source, vpn_packet_t *packet, uint8_t type, uint8_t code) { struct ip6_hdr ip6; struct icmp6_hdr icmp6 = {0}; uint16_t checksum; @@ -404,7 +360,9 @@ static void route_ipv6_unreachable(node_t *source, vpn_packet_t *packet, uint8_t if(ratelimit(3)) return; - cp(); + /* Swap Ethernet source and destination addresses */ + + swap_mac_addresses(packet); /* Copy headers from packet to structs on the stack */ @@ -465,19 +423,16 @@ static void route_ipv6_unreachable(node_t *source, vpn_packet_t *packet, uint8_t send_packet(source, packet); } -static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) -{ +static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) { subnet_t *subnet; node_t *via; ipv6_t dest; - cp(); - memcpy(&dest, &packet->data[38], sizeof dest); subnet = lookup_subnet_ipv6(&dest); if(!subnet) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"), + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx", source->name, source->hostname, ntohs(dest.x[0]), ntohs(dest.x[1]), @@ -493,7 +448,7 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) } if(subnet->owner == source) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname); return; } @@ -503,7 +458,7 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; if(via && packet->len > via->mtu && via != myself) { - ifdebug(TRAFFIC) logger(LOG_INFO, _("Packet for %s (%s) length %d larger than MTU %d"), subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); + ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); packet->len = via->mtu; route_ipv6_unreachable(source, packet, ICMP6_PACKET_TOO_BIG, 0); return; @@ -514,13 +469,13 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) /* RFC 2461 */ -static void route_neighborsol(node_t *source, vpn_packet_t *packet) -{ +static void route_neighborsol(node_t *source, vpn_packet_t *packet) { struct ip6_hdr ip6; struct nd_neighbor_solicit ns; struct nd_opt_hdr opt; subnet_t *subnet; uint16_t checksum; + bool has_opt; struct { struct in6_addr ip6_src; /* source address */ @@ -529,13 +484,13 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) uint32_t next; } pseudo; - cp(); - - if(!checklength(source, packet, ether_size + ip6_size + ns_size + opt_size + ETH_ALEN)) + if(!checklength(source, packet, ether_size + ip6_size + ns_size)) return; + has_opt = packet->len >= ether_size + ip6_size + ns_size + opt_size + ETH_ALEN; + if(source != myself) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got neighbor solicitation request from %s (%s) while in router mode!"), source->name, source->hostname); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Got neighbor solicitation request from %s (%s) while in router mode!", source->name, source->hostname); return; } @@ -543,7 +498,8 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) memcpy(&ip6, packet->data + ether_size, ip6_size); memcpy(&ns, packet->data + ether_size + ip6_size, ns_size); - memcpy(&opt, packet->data + ether_size + ip6_size + ns_size, opt_size); + if(has_opt) + memcpy(&opt, packet->data + ether_size + ip6_size + ns_size, opt_size); /* First, snatch the source address from the neighbor solicitation packet */ @@ -553,8 +509,8 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) /* Check if this is a valid neighbor solicitation request */ if(ns.nd_ns_hdr.icmp6_type != ND_NEIGHBOR_SOLICIT || - opt.nd_opt_type != ND_OPT_SOURCE_LINKADDR) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: received unknown type neighbor solicitation request")); + (has_opt && opt.nd_opt_type != ND_OPT_SOURCE_LINKADDR)) { + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: received unknown type neighbor solicitation request"); return; } @@ -562,18 +518,23 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) pseudo.ip6_src = ip6.ip6_src; pseudo.ip6_dst = ip6.ip6_dst; - pseudo.length = htonl(ns_size + opt_size + ETH_ALEN); + if(has_opt) + pseudo.length = htonl(ns_size + opt_size + ETH_ALEN); + else + pseudo.length = htonl(ns_size); pseudo.next = htonl(IPPROTO_ICMPV6); /* Generate checksum */ checksum = inet_checksum(&pseudo, sizeof(pseudo), ~0); checksum = inet_checksum(&ns, ns_size, checksum); - checksum = inet_checksum(&opt, opt_size, checksum); - checksum = inet_checksum(packet->data + ether_size + ip6_size + ns_size + opt_size, ETH_ALEN, checksum); + if(has_opt) { + checksum = inet_checksum(&opt, opt_size, checksum); + checksum = inet_checksum(packet->data + ether_size + ip6_size + ns_size + opt_size, ETH_ALEN, checksum); + } if(checksum) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: checksum error for neighbor solicitation request")); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: checksum error for neighbor solicitation request"); return; } @@ -582,7 +543,7 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) subnet = lookup_subnet_ipv6((ipv6_t *) &ns.nd_ns_target); if(!subnet) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: neighbor solicitation request for unknown address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"), + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: neighbor solicitation request for unknown address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx", ntohs(((uint16_t *) &ns.nd_ns_target)[0]), ntohs(((uint16_t *) &ns.nd_ns_target)[1]), ntohs(((uint16_t *) &ns.nd_ns_target)[2]), @@ -608,7 +569,8 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) ip6.ip6_dst = ip6.ip6_src; /* swap destination and source protocoll address */ ip6.ip6_src = ns.nd_ns_target; - memcpy(packet->data + ether_size + ip6_size + ns_size + opt_size, packet->data + ETH_ALEN, ETH_ALEN); /* add fake source hard addr */ + if(has_opt) + memcpy(packet->data + ether_size + ip6_size + ns_size + opt_size, packet->data + ETH_ALEN, ETH_ALEN); /* add fake source hard addr */ ns.nd_ns_cksum = 0; ns.nd_ns_type = ND_NEIGHBOR_ADVERT; @@ -619,15 +581,20 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) pseudo.ip6_src = ip6.ip6_src; pseudo.ip6_dst = ip6.ip6_dst; - pseudo.length = htonl(ns_size + opt_size + ETH_ALEN); + if(has_opt) + pseudo.length = htonl(ns_size + opt_size + ETH_ALEN); + else + pseudo.length = htonl(ns_size); pseudo.next = htonl(IPPROTO_ICMPV6); /* Generate checksum */ checksum = inet_checksum(&pseudo, sizeof(pseudo), ~0); checksum = inet_checksum(&ns, ns_size, checksum); - checksum = inet_checksum(&opt, opt_size, checksum); - checksum = inet_checksum(packet->data + ether_size + ip6_size + ns_size + opt_size, ETH_ALEN, checksum); + if(has_opt) { + checksum = inet_checksum(&opt, opt_size, checksum); + checksum = inet_checksum(packet->data + ether_size + ip6_size + ns_size + opt_size, ETH_ALEN, checksum); + } ns.nd_ns_hdr.icmp6_cksum = checksum; @@ -635,15 +602,13 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) memcpy(packet->data + ether_size, &ip6, ip6_size); memcpy(packet->data + ether_size + ip6_size, &ns, ns_size); - memcpy(packet->data + ether_size + ip6_size + ns_size, &opt, opt_size); + if(has_opt) + memcpy(packet->data + ether_size + ip6_size + ns_size, &opt, opt_size); send_packet(source, packet); } -static void route_ipv6(node_t *source, vpn_packet_t *packet) -{ - cp(); - +static void route_ipv6(node_t *source, vpn_packet_t *packet) { if(!checklength(source, packet, ether_size + ip6_size)) return; @@ -660,19 +625,16 @@ static void route_ipv6(node_t *source, vpn_packet_t *packet) /* RFC 826 */ -static void route_arp(node_t *source, vpn_packet_t *packet) -{ +static void route_arp(node_t *source, vpn_packet_t *packet) { struct ether_arp arp; subnet_t *subnet; struct in_addr addr; - cp(); - if(!checklength(source, packet, ether_size + arp_size)) return; if(source != myself) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got ARP request from %s (%s) while in router mode!"), source->name, source->hostname); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Got ARP request from %s (%s) while in router mode!", source->name, source->hostname); return; } @@ -689,7 +651,7 @@ static void route_arp(node_t *source, vpn_packet_t *packet) if(ntohs(arp.arp_hrd) != ARPHRD_ETHER || ntohs(arp.arp_pro) != ETH_P_IP || arp.arp_hln != ETH_ALEN || arp.arp_pln != sizeof(addr) || ntohs(arp.arp_op) != ARPOP_REQUEST) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: received unknown type ARP request")); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: received unknown type ARP request"); return; } @@ -698,7 +660,7 @@ static void route_arp(node_t *source, vpn_packet_t *packet) subnet = lookup_subnet_ipv4((ipv4_t *) &arp.arp_tpa); if(!subnet) { - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: ARP request for unknown address %d.%d.%d.%d"), + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: ARP request for unknown address %d.%d.%d.%d", arp.arp_tpa[0], arp.arp_tpa[1], arp.arp_tpa[2], arp.arp_tpa[3]); return; @@ -727,19 +689,67 @@ static void route_arp(node_t *source, vpn_packet_t *packet) send_packet(source, packet); } -void route(node_t *source, vpn_packet_t *packet) -{ - cp(); +static void route_mac(node_t *source, vpn_packet_t *packet) { + subnet_t *subnet; + mac_t dest; + /* Learn source address */ + + if(source == myself) { + mac_t src; + memcpy(&src, &packet->data[6], sizeof src); + learn_mac(&src); + } + + /* Lookup destination address */ + + memcpy(&dest, &packet->data[0], sizeof dest); + subnet = lookup_subnet_mac(&dest); + + if(!subnet) { + broadcast_packet(source, packet); + return; + } + + if(subnet->owner == source) { + ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname); + return; + } + + // Handle packets larger than PMTU + + node_t *via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; + + if(via && packet->len > via->mtu && via != myself) { + ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); + uint16_t type = packet->data[12] << 8 | packet->data[13]; + if(type == ETH_P_IP) { + if(packet->data[20] & 0x40) { + packet->len = via->mtu; + route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED); + } else { + fragment_ipv4_packet(via, packet); + } + return; + } else if(type == ETH_P_IPV6) { + packet->len = via->mtu; + route_ipv6_unreachable(source, packet, ICMP6_PACKET_TOO_BIG, 0); + return; + } + } + + send_packet(subnet->owner, packet); +} + +void route(node_t *source, vpn_packet_t *packet) { if(!checklength(source, packet, ether_size)) return; switch (routing_mode) { case RMODE_ROUTER: { - uint16_t type; + uint16_t type = packet->data[12] << 8 | packet->data[13]; - type = ntohs(*((uint16_t *)(&packet->data[12]))); switch (type) { case ETH_P_ARP: route_arp(source, packet); @@ -754,7 +764,7 @@ void route(node_t *source, vpn_packet_t *packet) break; default: - ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown type %hx"), source->name, source->hostname, type); + ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet from %s (%s): unknown type %hx", source->name, source->hostname, type); break; } } diff --git a/src/route.h b/src/route.h index a13d448..1fcc6be 100644 --- a/src/route.h +++ b/src/route.h @@ -1,6 +1,6 @@ /* route.h -- header file for route.c - Copyright (C) 2000-2005 Ivo Timmermans + Copyright (C) 2000-2005 Ivo Timmermans 2000-2006 Guus Sliepen This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: route.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_ROUTE_H__ diff --git a/src/solaris/device.c b/src/solaris/device.c index 7bcac15..e26dc06 100644 --- a/src/solaris/device.c +++ b/src/solaris/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Solaris tun device Copyright (C) 2001-2005 Ivo Timmermans, - 2001-2006 Guus Sliepen + 2001-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -31,30 +29,28 @@ #include "logger.h" #include "net.h" #include "utils.h" +#include "xalloc.h" #define DEFAULT_DEVICE "/dev/tun" int device_fd = -1; char *device = NULL; char *iface = NULL; -char *device_info = NULL; +static char *device_info = NULL; static int device_total_in = 0; static int device_total_out = 0; -bool setup_device(void) -{ +bool setup_device(void) { int ip_fd = -1, if_fd = -1; int ppa; char *ptr; - cp(); - if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - device = DEFAULT_DEVICE; + device = xstrdup(DEFAULT_DEVICE); if((device_fd = open(device, O_RDWR | O_NONBLOCK)) < 0) { - logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); + logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno)); return false; } @@ -66,63 +62,60 @@ bool setup_device(void) ppa = atoi(ptr); if((ip_fd = open("/dev/ip", O_RDWR, 0)) < 0) { - logger(LOG_ERR, _("Could not open /dev/ip: %s"), strerror(errno)); + logger(LOG_ERR, "Could not open /dev/ip: %s", strerror(errno)); return false; } /* Assign a new PPA and get its unit number. */ if((ppa = ioctl(device_fd, TUNNEWPPA, ppa)) < 0) { - logger(LOG_ERR, _("Can't assign new interface: %s"), strerror(errno)); + logger(LOG_ERR, "Can't assign new interface: %s", strerror(errno)); return false; } if((if_fd = open(device, O_RDWR, 0)) < 0) { - logger(LOG_ERR, _("Could not open %s twice: %s"), device, + logger(LOG_ERR, "Could not open %s twice: %s", device, strerror(errno)); return false; } if(ioctl(if_fd, I_PUSH, "ip") < 0) { - logger(LOG_ERR, _("Can't push IP module: %s"), strerror(errno)); + logger(LOG_ERR, "Can't push IP module: %s", strerror(errno)); return false; } /* Assign ppa according to the unit number returned by tun device */ if(ioctl(if_fd, IF_UNITSEL, (char *) &ppa) < 0) { - logger(LOG_ERR, _("Can't set PPA %d: %s"), ppa, strerror(errno)); + logger(LOG_ERR, "Can't set PPA %d: %s", ppa, strerror(errno)); return false; } if(ioctl(ip_fd, I_LINK, if_fd) < 0) { - logger(LOG_ERR, _("Can't link TUN device to IP: %s"), strerror(errno)); + logger(LOG_ERR, "Can't link TUN device to IP: %s", strerror(errno)); return false; } if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) - asprintf(&iface, "tun%d", ppa); + xasprintf(&iface, "tun%d", ppa); - device_info = _("Solaris tun device"); + device_info = "Solaris tun device"; - logger(LOG_INFO, _("%s is a %s"), device, device_info); + logger(LOG_INFO, "%s is a %s", device, device_info); return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { close(device_fd); + + free(device); + free(iface); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - if((lenin = read(device_fd, packet->data + 14, MTU - 14)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -138,7 +131,7 @@ bool read_packet(vpn_packet_t *packet) break; default: ifdebug(TRAFFIC) logger(LOG_ERR, - _ ("Unknown IP version %d while reading packet from %s %s"), + "Unknown IP version %d while reading packet from %s %s", packet->data[14] >> 4, device_info, device); return false; } @@ -147,21 +140,18 @@ bool read_packet(vpn_packet_t *packet) device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; } -bool write_packet(vpn_packet_t *packet) -{ - cp(); - - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), +bool write_packet(vpn_packet_t *packet) { + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); if(write(device_fd, packet->data + 14, packet->len - 14) < 0) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); return false; } @@ -171,11 +161,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/src/subnet.c b/src/subnet.c index a61ab9d..ef4e59e 100644 --- a/src/subnet.c +++ b/src/subnet.c @@ -1,6 +1,6 @@ /* subnet.c -- handle subnet lookups and lists - Copyright (C) 2000-2007 Guus Sliepen , + Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: subnet.c 1595 2008-12-22 20:27:52Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -37,30 +35,55 @@ avl_tree_t *subnet_tree; +/* Subnet lookup cache */ + +static ipv4_t cache_ipv4_address[2]; +static subnet_t *cache_ipv4_subnet[2]; +static bool cache_ipv4_valid[2]; +static int cache_ipv4_slot; + +static ipv6_t cache_ipv6_address[2]; +static subnet_t *cache_ipv6_subnet[2]; +static bool cache_ipv6_valid[2]; +static int cache_ipv6_slot; + +void subnet_cache_flush() { + cache_ipv4_valid[0] = cache_ipv4_valid[1] = false; + cache_ipv6_valid[0] = cache_ipv6_valid[1] = false; +} + /* Subnet comparison */ -static int subnet_compare_mac(const subnet_t *a, const subnet_t *b) -{ +static int subnet_compare_mac(const subnet_t *a, const subnet_t *b) { int result; result = memcmp(&a->net.mac.address, &b->net.mac.address, sizeof(mac_t)); + if(result) + return result; + + result = a->weight - b->weight; + if(result || !a->owner || !b->owner) return result; return strcmp(a->owner->name, b->owner->name); } -static int subnet_compare_ipv4(const subnet_t *a, const subnet_t *b) -{ +static int subnet_compare_ipv4(const subnet_t *a, const subnet_t *b) { int result; + result = b->net.ipv4.prefixlength - a->net.ipv4.prefixlength; + + if(result) + return result; + result = memcmp(&a->net.ipv4.address, &b->net.ipv4.address, sizeof(ipv4_t)); if(result) return result; - - result = a->net.ipv4.prefixlength - b->net.ipv4.prefixlength; + + result = a->weight - b->weight; if(result || !a->owner || !b->owner) return result; @@ -68,16 +91,20 @@ static int subnet_compare_ipv4(const subnet_t *a, const subnet_t *b) return strcmp(a->owner->name, b->owner->name); } -static int subnet_compare_ipv6(const subnet_t *a, const subnet_t *b) -{ +static int subnet_compare_ipv6(const subnet_t *a, const subnet_t *b) { int result; + result = b->net.ipv6.prefixlength - a->net.ipv6.prefixlength; + + if(result) + return result; + result = memcmp(&a->net.ipv6.address, &b->net.ipv6.address, sizeof(ipv6_t)); if(result) return result; - - result = a->net.ipv6.prefixlength - b->net.ipv6.prefixlength; + + result = a->weight - b->weight; if(result || !a->owner || !b->owner) return result; @@ -85,8 +112,7 @@ static int subnet_compare_ipv6(const subnet_t *a, const subnet_t *b) return strcmp(a->owner->name, b->owner->name); } -int subnet_compare(const subnet_t *a, const subnet_t *b) -{ +int subnet_compare(const subnet_t *a, const subnet_t *b) { int result; result = a->type - b->type; @@ -102,9 +128,8 @@ int subnet_compare(const subnet_t *a, const subnet_t *b) case SUBNET_IPV6: return subnet_compare_ipv6(a, b); default: - logger(LOG_ERR, _("subnet_compare() was called with unknown subnet type %d, exitting!"), + logger(LOG_ERR, "subnet_compare() was called with unknown subnet type %d, exitting!", a->type); - cp_trace(); exit(0); } @@ -113,86 +138,67 @@ int subnet_compare(const subnet_t *a, const subnet_t *b) /* Initialising trees */ -void init_subnets(void) -{ - cp(); - +void init_subnets(void) { subnet_tree = avl_alloc_tree((avl_compare_t) subnet_compare, (avl_action_t) free_subnet); + + subnet_cache_flush(); } -void exit_subnets(void) -{ - cp(); - +void exit_subnets(void) { avl_delete_tree(subnet_tree); } -avl_tree_t *new_subnet_tree(void) -{ - cp(); - +avl_tree_t *new_subnet_tree(void) { return avl_alloc_tree((avl_compare_t) subnet_compare, NULL); } -void free_subnet_tree(avl_tree_t *subnet_tree) -{ - cp(); - +void free_subnet_tree(avl_tree_t *subnet_tree) { avl_delete_tree(subnet_tree); } /* Allocating and freeing space for subnets */ -subnet_t *new_subnet(void) -{ - cp(); - +subnet_t *new_subnet(void) { return xmalloc_and_zero(sizeof(subnet_t)); } -void free_subnet(subnet_t *subnet) -{ - cp(); - +void free_subnet(subnet_t *subnet) { free(subnet); } /* Adding and removing subnets */ -void subnet_add(node_t *n, subnet_t *subnet) -{ - cp(); - +void subnet_add(node_t *n, subnet_t *subnet) { subnet->owner = n; avl_insert(subnet_tree, subnet); avl_insert(n->subnet_tree, subnet); + + subnet_cache_flush(); } -void subnet_del(node_t *n, subnet_t *subnet) -{ - cp(); - +void subnet_del(node_t *n, subnet_t *subnet) { avl_delete(n->subnet_tree, subnet); avl_delete(subnet_tree, subnet); + + subnet_cache_flush(); } /* Ascii representation of subnets */ -bool str2net(subnet_t *subnet, const char *subnetstr) -{ +bool str2net(subnet_t *subnet, const char *subnetstr) { int i, l; uint16_t x[8]; + int weight = 10; - cp(); - - if(sscanf(subnetstr, "%hu.%hu.%hu.%hu/%d", - &x[0], &x[1], &x[2], &x[3], &l) == 5) { + if(sscanf(subnetstr, "%hu.%hu.%hu.%hu/%d#%d", + &x[0], &x[1], &x[2], &x[3], &l, &weight) >= 5) { if(l < 0 || l > 32) return false; subnet->type = SUBNET_IPV4; subnet->net.ipv4.prefixlength = l; + subnet->weight = weight; for(i = 0; i < 4; i++) { if(x[i] > 255) @@ -203,14 +209,15 @@ bool str2net(subnet_t *subnet, const char *subnetstr) return true; } - if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d", + if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d#%d", &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7], - &l) == 9) { + &l, &weight) >= 9) { if(l < 0 || l > 128) return false; subnet->type = SUBNET_IPV6; subnet->net.ipv6.prefixlength = l; + subnet->weight = weight; for(i = 0; i < 8; i++) subnet->net.ipv6.address.x[i] = htons(x[i]); @@ -218,9 +225,10 @@ bool str2net(subnet_t *subnet, const char *subnetstr) return true; } - if(sscanf(subnetstr, "%hu.%hu.%hu.%hu", &x[0], &x[1], &x[2], &x[3]) == 4) { + if(sscanf(subnetstr, "%hu.%hu.%hu.%hu#%d", &x[0], &x[1], &x[2], &x[3], &weight) >= 4) { subnet->type = SUBNET_IPV4; subnet->net.ipv4.prefixlength = 32; + subnet->weight = weight; for(i = 0; i < 4; i++) { if(x[i] > 255) @@ -231,10 +239,11 @@ bool str2net(subnet_t *subnet, const char *subnetstr) return true; } - if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx", - &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7]) == 8) { + if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx#%d", + &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &x[6], &x[7], &weight) >= 8) { subnet->type = SUBNET_IPV6; subnet->net.ipv6.prefixlength = 128; + subnet->weight = weight; for(i = 0; i < 8; i++) subnet->net.ipv6.address.x[i] = htons(x[i]); @@ -242,9 +251,10 @@ bool str2net(subnet_t *subnet, const char *subnetstr) return true; } - if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx", - &x[0], &x[1], &x[2], &x[3], &x[4], &x[5]) == 6) { + if(sscanf(subnetstr, "%hx:%hx:%hx:%hx:%hx:%hx#%d", + &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &weight) >= 6) { subnet->type = SUBNET_MAC; + subnet->weight = weight; for(i = 0; i < 6; i++) subnet->net.mac.address.x[i] = x[i]; @@ -255,35 +265,36 @@ bool str2net(subnet_t *subnet, const char *subnetstr) return false; } -bool net2str(char *netstr, int len, const subnet_t *subnet) -{ - cp(); - +bool net2str(char *netstr, int len, const subnet_t *subnet) { if(!netstr || !subnet) { - logger(LOG_ERR, _("net2str() was called with netstr=%p, subnet=%p!\n"), netstr, subnet); + logger(LOG_ERR, "net2str() was called with netstr=%p, subnet=%p!\n", netstr, subnet); return false; } switch (subnet->type) { case SUBNET_MAC: - snprintf(netstr, len, "%hx:%hx:%hx:%hx:%hx:%hx", + snprintf(netstr, len, "%hx:%hx:%hx:%hx:%hx:%hx#%d", subnet->net.mac.address.x[0], subnet->net.mac.address.x[1], subnet->net.mac.address.x[2], subnet->net.mac.address.x[3], - subnet->net.mac.address.x[4], subnet->net.mac.address.x[5]); + subnet->net.mac.address.x[4], + subnet->net.mac.address.x[5], + subnet->weight); break; case SUBNET_IPV4: - snprintf(netstr, len, "%hu.%hu.%hu.%hu/%d", + snprintf(netstr, len, "%hu.%hu.%hu.%hu/%d#%d", subnet->net.ipv4.address.x[0], subnet->net.ipv4.address.x[1], subnet->net.ipv4.address.x[2], - subnet->net.ipv4.address.x[3], subnet->net.ipv4.prefixlength); + subnet->net.ipv4.address.x[3], + subnet->net.ipv4.prefixlength, + subnet->weight); break; case SUBNET_IPV6: - snprintf(netstr, len, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d", + snprintf(netstr, len, "%hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx/%d#%d", ntohs(subnet->net.ipv6.address.x[0]), ntohs(subnet->net.ipv6.address.x[1]), ntohs(subnet->net.ipv6.address.x[2]), @@ -292,14 +303,14 @@ bool net2str(char *netstr, int len, const subnet_t *subnet) ntohs(subnet->net.ipv6.address.x[5]), ntohs(subnet->net.ipv6.address.x[6]), ntohs(subnet->net.ipv6.address.x[7]), - subnet->net.ipv6.prefixlength); + subnet->net.ipv6.prefixlength, + subnet->weight); break; default: logger(LOG_ERR, - _("net2str() was called with unknown subnet type %d, exiting!"), + "net2str() was called with unknown subnet type %d, exiting!", subnet->type); - cp_trace(); exit(0); } @@ -308,19 +319,13 @@ bool net2str(char *netstr, int len, const subnet_t *subnet) /* Subnet lookup routines */ -subnet_t *lookup_subnet(const node_t *owner, const subnet_t *subnet) -{ - cp(); - +subnet_t *lookup_subnet(const node_t *owner, const subnet_t *subnet) { return avl_search(owner->subnet_tree, subnet); } -subnet_t *lookup_subnet_mac(const mac_t *address) -{ +subnet_t *lookup_subnet_mac(const mac_t *address) { subnet_t *p, subnet = {0}; - cp(); - subnet.type = SUBNET_MAC; subnet.net.mac.address = *address; subnet.owner = NULL; @@ -330,105 +335,114 @@ subnet_t *lookup_subnet_mac(const mac_t *address) return p; } -subnet_t *lookup_subnet_ipv4(const ipv4_t *address) -{ - subnet_t *p, subnet = {0}; +subnet_t *lookup_subnet_ipv4(const ipv4_t *address) { + subnet_t *p, *r = NULL, subnet = {0}; + avl_node_t *n; + int i; - cp(); + // Check if this address is cached + + for(i = 0; i < 2; i++) { + if(!cache_ipv4_valid[i]) + continue; + if(!memcmp(address, &cache_ipv4_address[i], sizeof *address)) + return cache_ipv4_subnet[i]; + } + + // Search all subnets for a matching one subnet.type = SUBNET_IPV4; subnet.net.ipv4.address = *address; subnet.net.ipv4.prefixlength = 32; subnet.owner = NULL; - do { - /* Go find subnet */ + for(n = subnet_tree->head; n; n = n->next) { + p = n->data; + + if(!p || p->type != subnet.type) + continue; - p = avl_search_closest_smaller(subnet_tree, &subnet); - - /* Check if the found subnet REALLY matches */ - - if(p) { - if(p->type != SUBNET_IPV4) { - p = NULL; + if(!maskcmp(address, &p->net.ipv4.address, p->net.ipv4.prefixlength)) { + r = p; + if(p->owner->status.reachable) break; - } - - if(!maskcmp(address, &p->net.ipv4.address, p->net.ipv4.prefixlength)) - break; - else { - /* Otherwise, see if there is a bigger enclosing subnet */ - - subnet.net.ipv4.prefixlength = p->net.ipv4.prefixlength - 1; - if(subnet.net.ipv4.prefixlength < 0 || subnet.net.ipv4.prefixlength > 32) - return NULL; - maskcpy(&subnet.net.ipv4.address, &p->net.ipv4.address, subnet.net.ipv4.prefixlength, sizeof(ipv4_t)); - } } - } while(p); + } - return p; + // Cache the result + + cache_ipv4_slot = !cache_ipv4_slot; + memcpy(&cache_ipv4_address[cache_ipv4_slot], address, sizeof *address); + cache_ipv4_subnet[cache_ipv4_slot] = r; + cache_ipv4_valid[cache_ipv4_slot] = true; + + return r; } -subnet_t *lookup_subnet_ipv6(const ipv6_t *address) -{ - subnet_t *p, subnet = {0}; +subnet_t *lookup_subnet_ipv6(const ipv6_t *address) { + subnet_t *p, *r = NULL, subnet = {0}; + avl_node_t *n; + int i; - cp(); + // Check if this address is cached + + for(i = 0; i < 2; i++) { + if(!cache_ipv6_valid[i]) + continue; + if(!memcmp(address, &cache_ipv6_address[i], sizeof *address)) + return cache_ipv6_subnet[i]; + } + + // Search all subnets for a matching one subnet.type = SUBNET_IPV6; subnet.net.ipv6.address = *address; subnet.net.ipv6.prefixlength = 128; subnet.owner = NULL; - do { - /* Go find subnet */ + for(n = subnet_tree->head; n; n = n->next) { + p = n->data; + + if(!p || p->type != subnet.type) + continue; - p = avl_search_closest_smaller(subnet_tree, &subnet); - - /* Check if the found subnet REALLY matches */ - - if(p) { - if(p->type != SUBNET_IPV6) - return NULL; - - if(!maskcmp(address, &p->net.ipv6.address, p->net.ipv6.prefixlength)) + if(!maskcmp(address, &p->net.ipv6.address, p->net.ipv6.prefixlength)) { + r = p; + if(p->owner->status.reachable) break; - else { - /* Otherwise, see if there is a bigger enclosing subnet */ - - subnet.net.ipv6.prefixlength = p->net.ipv6.prefixlength - 1; - if(subnet.net.ipv6.prefixlength < 0 || subnet.net.ipv6.prefixlength > 128) - return NULL; - maskcpy(&subnet.net.ipv6.address, &p->net.ipv6.address, subnet.net.ipv6.prefixlength, sizeof(ipv6_t)); - } } - } while(p); + } - return p; + // Cache the result + + cache_ipv6_slot = !cache_ipv6_slot; + memcpy(&cache_ipv6_address[cache_ipv6_slot], address, sizeof *address); + cache_ipv6_subnet[cache_ipv6_slot] = r; + cache_ipv6_valid[cache_ipv6_slot] = true; + + return r; } void subnet_update(node_t *owner, subnet_t *subnet, bool up) { avl_node_t *node; int i; - char *envp[8]; - char netstr[MAXNETSTR + 7] = "SUBNET="; + char *envp[9] = {0}; + char netstr[MAXNETSTR]; char *name, *address, *port; + char empty[] = ""; - asprintf(&envp[0], "NETNAME=%s", netname ? : ""); - asprintf(&envp[1], "DEVICE=%s", device ? : ""); - asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); - asprintf(&envp[3], "NODE=%s", owner->name); + // Prepare environment variables to be passed to the script + + xasprintf(&envp[0], "NETNAME=%s", netname ? : ""); + xasprintf(&envp[1], "DEVICE=%s", device ? : ""); + xasprintf(&envp[2], "INTERFACE=%s", iface ? : ""); + xasprintf(&envp[3], "NODE=%s", owner->name); if(owner != myself) { sockaddr2str(&owner->address, &address, &port); - asprintf(&envp[4], "REMOTEADDRESS=%s", address); - asprintf(&envp[5], "REMOTEPORT=%s", port); - envp[6] = netstr; - envp[7] = NULL; - } else { - envp[4] = netstr; - envp[5] = NULL; + // 4 and 5 are reserved for SUBNET and WEIGHT + xasprintf(&envp[6], "REMOTEADDRESS=%s", address); + xasprintf(&envp[7], "REMOTEPORT=%s", port); } name = up ? "subnet-up" : "subnet-down"; @@ -436,40 +450,59 @@ void subnet_update(node_t *owner, subnet_t *subnet, bool up) { if(!subnet) { for(node = owner->subnet_tree->head; node; node = node->next) { subnet = node->data; - if(!net2str(netstr + 7, sizeof netstr - 7, subnet)) + if(!net2str(netstr, sizeof netstr, subnet)) continue; + // Strip the weight from the subnet, and put it in its own environment variable + char *weight = strchr(netstr + 7, '#'); + if(weight) + *weight++ = 0; + else + weight = empty; + + // Prepare the SUBNET and WEIGHT variables + if(envp[4]) + free(envp[4]); + if(envp[5]) + free(envp[5]); + xasprintf(&envp[4], "SUBNET=%s", netstr); + xasprintf(&envp[5], "WEIGHT=%s", weight); + execute_script(name, envp); } } else { - if(net2str(netstr + 7, sizeof netstr - 7, subnet)) + if(net2str(netstr + 7, sizeof netstr - 7, subnet)) { + // Strip the weight from the subnet, and put it in its own environment variable + char *weight = strchr(netstr + 7, '#'); + if(weight) + *weight++ = 0; + else + weight = empty; + + // Prepare the SUBNET and WEIGHT variables + xasprintf(&envp[4], "SUBNET=%s", netstr); + xasprintf(&envp[5], "WEIGHT=%s", weight); + execute_script(name, envp); + } } - for(i = 0; i < (owner != myself ? 6 : 4); i++) + for(i = 0; envp[i] && i < 9; i++) free(envp[i]); - - if(owner != myself) { - free(address); - free(port); - } } -void dump_subnets(void) -{ +void dump_subnets(void) { char netstr[MAXNETSTR]; subnet_t *subnet; avl_node_t *node; - cp(); - - logger(LOG_DEBUG, _("Subnet list:")); + logger(LOG_DEBUG, "Subnet list:"); for(node = subnet_tree->head; node; node = node->next) { subnet = node->data; if(!net2str(netstr, sizeof netstr, subnet)) continue; - logger(LOG_DEBUG, _(" %s owner %s"), netstr, subnet->owner->name); + logger(LOG_DEBUG, " %s owner %s", netstr, subnet->owner->name); } - logger(LOG_DEBUG, _("End of subnet list.")); + logger(LOG_DEBUG, "End of subnet list."); } diff --git a/src/subnet.h b/src/subnet.h index 7e648d0..c9bb10e 100644 --- a/src/subnet.h +++ b/src/subnet.h @@ -1,6 +1,6 @@ /* subnet.h -- header for subnet.c - Copyright (C) 2000-2006 Guus Sliepen , + Copyright (C) 2000-2009 Guus Sliepen , 2000-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -13,11 +13,9 @@ 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. - - $Id: subnet.h 1452 2006-04-26 13:52:58Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_SUBNET_H__ @@ -53,6 +51,7 @@ typedef struct subnet_t { subnet_type_t type; /* subnet type (IPv4? IPv6? MAC? something even weirder?) */ time_t expires; /* expiry time */ + int weight; /* weight (higher value is higher priority) */ /* And now for the actual subnet: */ @@ -82,5 +81,6 @@ extern subnet_t *lookup_subnet_mac(const mac_t *); extern subnet_t *lookup_subnet_ipv4(const ipv4_t *); extern subnet_t *lookup_subnet_ipv6(const ipv6_t *); extern void dump_subnets(void); +extern void subnet_cache_flush(void); #endif /* __TINC_SUBNET_H__ */ diff --git a/src/tincd.c b/src/tincd.c index ae033ff..8c2b12d 100644 --- a/src/tincd.c +++ b/src/tincd.c @@ -1,7 +1,9 @@ /* tincd.c -- the main file for tincd Copyright (C) 1998-2005 Ivo Timmermans - 2000-2008 Guus Sliepen + 2000-2009 Guus Sliepen + 2008 Max Rijevski + 2009 Michael Tokarev 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 @@ -13,11 +15,9 @@ 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. - - $Id: tincd.c 1600 2008-12-23 23:14:37Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -39,6 +39,12 @@ #include LZO1X_H +#ifndef HAVE_MINGW +#include +#include +#include +#endif + #include #include "pidfile.h" @@ -73,6 +79,12 @@ bool bypass_security = false; /* If nonzero, disable swapping for this process. */ bool do_mlock = false; +/* If nonzero, chroot to netdir after startup. */ +static bool do_chroot = false; + +/* If !NULL, do setuid to given user after startup */ +static const char *switchuser = NULL; + /* If nonzero, write log entries to a separate file. */ bool use_logfile = false; @@ -94,6 +106,8 @@ static struct option const long_options[] = { {"debug", optional_argument, NULL, 'd'}, {"bypass-security", no_argument, NULL, 3}, {"mlock", no_argument, NULL, 'L'}, + {"chroot", no_argument, NULL, 'R'}, + {"user", required_argument, NULL, 'U'}, {"logfile", optional_argument, NULL, 4}, {"pidfile", required_argument, NULL, 5}, {NULL, 0, NULL, 0} @@ -101,16 +115,16 @@ static struct option const long_options[] = { #ifdef HAVE_MINGW static struct WSAData wsa_state; +CRITICAL_SECTION mutex; #endif -static void usage(bool status) -{ +static void usage(bool status) { if(status) - fprintf(stderr, _("Try `%s --help\' for more information.\n"), + fprintf(stderr, "Try `%s --help\' for more information.\n", program_name); else { - printf(_("Usage: %s [option]...\n\n"), program_name); - printf(_(" -c, --config=DIR Read configuration options from DIR.\n" + printf("Usage: %s [option]...\n\n", program_name); + printf(" -c, --config=DIR Read configuration options from DIR.\n" " -D, --no-detach Don't fork and detach.\n" " -d, --debug[=LEVEL] Increase debug level or set it to LEVEL.\n" " -k, --kill[=SIGNAL] Attempt to kill a running tincd and exit.\n" @@ -119,18 +133,19 @@ static void usage(bool status) " -L, --mlock Lock tinc into main memory.\n" " --logfile[=FILENAME] Write log entries to a logfile.\n" " --pidfile=FILENAME Write PID to FILENAME.\n" + " -R, --chroot chroot to NET dir at startup.\n" + " -U, --user=USER setuid to given USER at startup.\n" " --help Display this help and exit.\n" - " --version Output version information and exit.\n\n")); - printf(_("Report bugs to tinc@tinc-vpn.org.\n")); + " --version Output version information and exit.\n\n"); + printf("Report bugs to tinc@tinc-vpn.org.\n"); } } -static bool parse_options(int argc, char **argv) -{ +static bool parse_options(int argc, char **argv) { int r; int option_index = 0; - while((r = getopt_long(argc, argv, "c:DLd::k::n:K::", long_options, &option_index)) != EOF) { + while((r = getopt_long(argc, argv, "c:DLd::k::n:K::RU:", long_options, &option_index)) != EOF) { switch (r) { case 0: /* long option */ break; @@ -144,8 +159,13 @@ static bool parse_options(int argc, char **argv) break; case 'L': /* no detach */ +#ifndef HAVE_MLOCKALL + logger(LOG_ERR, "%s not supported on this platform", "mlockall()"); + return false; +#else do_mlock = true; break; +#endif case 'd': /* inc debug level */ if(optarg) @@ -177,7 +197,7 @@ static bool parse_options(int argc, char **argv) kill_tincd = atoi(optarg); if(!kill_tincd) { - fprintf(stderr, _("Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n"), + fprintf(stderr, "Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n", optarg); usage(true); return false; @@ -199,7 +219,7 @@ static bool parse_options(int argc, char **argv) generate_keys = atoi(optarg); if(generate_keys < 512) { - fprintf(stderr, _("Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"), + fprintf(stderr, "Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n", optarg); usage(true); return false; @@ -207,7 +227,15 @@ static bool parse_options(int argc, char **argv) generate_keys &= ~7; /* Round it to bytes */ } else - generate_keys = 1024; + generate_keys = 2048; + break; + + case 'R': /* chroot to NETNAME dir */ + do_chroot = true; + break; + + case 'U': /* setuid to USER */ + switchuser = optarg; break; case 1: /* show help */ @@ -246,8 +274,7 @@ static bool parse_options(int argc, char **argv) /* This function prettyprints the key generation process */ -static void indicator(int a, int b, void *p) -{ +static void indicator(int a, int b, void *p) { switch (a) { case 0: fprintf(stderr, "."); @@ -285,58 +312,64 @@ static void indicator(int a, int b, void *p) Generate a public/private RSA keypair, and ask for a file to store them in. */ -static bool keygen(int bits) -{ +static bool keygen(int bits) { RSA *rsa_key; FILE *f; char *name = NULL; char *filename; - fprintf(stderr, _("Generating %d bits keys:\n"), bits); + get_config_string(lookup_config(config_tree, "Name"), &name); + + if(name && !check_id(name)) { + fprintf(stderr, "Invalid name for myself!\n"); + return false; + } + + fprintf(stderr, "Generating %d bits keys:\n", bits); rsa_key = RSA_generate_key(bits, 0x10001, indicator, NULL); if(!rsa_key) { - fprintf(stderr, _("Error during key generation!\n")); + fprintf(stderr, "Error during key generation!\n"); return false; } else - fprintf(stderr, _("Done.\n")); + fprintf(stderr, "Done.\n"); - asprintf(&filename, "%s/rsa_key.priv", confbase); - f = ask_and_open(filename, _("private RSA key"), "a"); + xasprintf(&filename, "%s/rsa_key.priv", confbase); + f = ask_and_open(filename, "private RSA key"); if(!f) return false; + + if(disable_old_keys(f)) + fprintf(stderr, "Warning: old key(s) found and disabled.\n"); #ifdef HAVE_FCHMOD /* Make it unreadable for others. */ fchmod(fileno(f), 0600); #endif - if(ftell(f)) - fprintf(stderr, _("Appending key to existing contents.\nMake sure only one key is stored in the file.\n")); - PEM_write_RSAPrivateKey(f, rsa_key, NULL, NULL, 0, NULL, NULL); fclose(f); free(filename); - get_config_string(lookup_config(config_tree, "Name"), &name); - if(name) - asprintf(&filename, "%s/hosts/%s", confbase, name); + xasprintf(&filename, "%s/hosts/%s", confbase, name); else - asprintf(&filename, "%s/rsa_key.pub", confbase); + xasprintf(&filename, "%s/rsa_key.pub", confbase); - f = ask_and_open(filename, _("public RSA key"), "a"); + f = ask_and_open(filename, "public RSA key"); if(!f) return false; - if(ftell(f)) - fprintf(stderr, _("Appending key to existing contents.\nMake sure only one key is stored in the file.\n")); + if(disable_old_keys(f)) + fprintf(stderr, "Warning: old key(s) found and disabled.\n"); PEM_write_RSAPublicKey(f, rsa_key); fclose(f); free(filename); + if(name) + free(name); return true; } @@ -344,8 +377,7 @@ static bool keygen(int bits) /* Set all files and paths according to netname */ -static void make_names(void) -{ +static void make_names(void) { #ifdef HAVE_MINGW HKEY key; char installdir[1024] = ""; @@ -353,7 +385,7 @@ static void make_names(void) #endif if(netname) - asprintf(&identname, "tinc.%s", netname); + xasprintf(&identname, "tinc.%s", netname); else identname = xstrdup("tinc"); @@ -361,12 +393,12 @@ static void make_names(void) if(!RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\tinc", 0, KEY_READ, &key)) { if(!RegQueryValueEx(key, NULL, 0, 0, installdir, &len)) { if(!logfilename) - asprintf(&logfilename, "%s/log/%s.log", identname); + xasprintf(&logfilename, "%s/log/%s.log", identname); if(!confbase) { if(netname) - asprintf(&confbase, "%s/%s", installdir, netname); + xasprintf(&confbase, "%s/%s", installdir, netname); else - asprintf(&confbase, "%s", installdir); + xasprintf(&confbase, "%s", installdir); } } RegCloseKey(key); @@ -376,29 +408,89 @@ static void make_names(void) #endif if(!pidfilename) - asprintf(&pidfilename, LOCALSTATEDIR "/run/%s.pid", identname); + xasprintf(&pidfilename, LOCALSTATEDIR "/run/%s.pid", identname); if(!logfilename) - asprintf(&logfilename, LOCALSTATEDIR "/log/%s.log", identname); + xasprintf(&logfilename, LOCALSTATEDIR "/log/%s.log", identname); if(netname) { if(!confbase) - asprintf(&confbase, CONFDIR "/tinc/%s", netname); + xasprintf(&confbase, CONFDIR "/tinc/%s", netname); else - logger(LOG_INFO, _("Both netname and configuration directory given, using the latter...")); + logger(LOG_INFO, "Both netname and configuration directory given, using the latter..."); } else { if(!confbase) - asprintf(&confbase, CONFDIR "/tinc"); + xasprintf(&confbase, CONFDIR "/tinc"); } } -int main(int argc, char **argv) -{ - program_name = argv[0]; +static void free_names() { + if (identname) free(identname); + if (netname) free(netname); + if (pidfilename) free(pidfilename); + if (logfilename) free(logfilename); + if (confbase) free(confbase); +} - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); +static bool drop_privs() { +#ifdef HAVE_MINGW + if (switchuser) { + logger(LOG_ERR, "%s not supported on this platform", "-U"); + return false; + } + if (do_chroot) { + logger(LOG_ERR, "%s not supported on this platform", "-R"); + return false; + } +#else + uid_t uid = 0; + if (switchuser) { + struct passwd *pw = getpwnam(switchuser); + if (!pw) { + logger(LOG_ERR, "unknown user `%s'", switchuser); + return false; + } + uid = pw->pw_uid; + if (initgroups(switchuser, pw->pw_gid) != 0 || + setgid(pw->pw_gid) != 0) { + logger(LOG_ERR, "System call `%s' failed: %s", + "initgroups", strerror(errno)); + return false; + } + endgrent(); + endpwent(); + } + if (do_chroot) { + tzset(); /* for proper timestamps in logs */ + if (chroot(confbase) != 0 || chdir("/") != 0) { + logger(LOG_ERR, "System call `%s' failed: %s", + "chroot", strerror(errno)); + return false; + } + free(confbase); + confbase = xstrdup(""); + } + if (switchuser) + if (setuid(uid) != 0) { + logger(LOG_ERR, "System call `%s' failed: %s", + "setuid", strerror(errno)); + return false; + } +#endif + return true; +} + +#ifdef HAVE_MINGW +# define setpriority(level) SetPriorityClass(GetCurrentProcess(), level) +#else +# define NORMAL_PRIORITY_CLASS 0 +# define BELOW_NORMAL_PRIORITY_CLASS 10 +# define HIGH_PRIORITY_CLASS -10 +# define setpriority(level) nice(level) +#endif + +int main(int argc, char **argv) { + program_name = argv[0]; if(!parse_options(argc, argv)) return 1; @@ -406,13 +498,13 @@ int main(int argc, char **argv) make_names(); if(show_version) { - printf(_("%s version %s (built %s %s, protocol %d)\n"), PACKAGE, + printf("%s version %s (built %s %s, protocol %d)\n", PACKAGE, VERSION, __DATE__, __TIME__, PROT_CURRENT); - printf(_("Copyright (C) 1998-2008 Ivo Timmermans, Guus Sliepen and others.\n" + printf("Copyright (C) 1998-2009 Ivo Timmermans, Guus Sliepen and others.\n" "See the AUTHORS file for a complete list.\n\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "and you are welcome to redistribute it under certain conditions;\n" - "see the file COPYING for details.\n")); + "see the file COPYING for details.\n"); return 0; } @@ -427,20 +519,6 @@ int main(int argc, char **argv) openlogger("tinc", use_logfile?LOGMODE_FILE:LOGMODE_STDERR); - /* Lock all pages into memory if requested */ - - if(do_mlock) -#ifdef HAVE_MLOCKALL - if(mlockall(MCL_CURRENT | MCL_FUTURE)) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "mlockall", - strerror(errno)); -#else - { - logger(LOG_ERR, _("mlockall() not supported on this platform!")); -#endif - return -1; - } - g_argv = argv; init_configuration(&config_tree); @@ -463,13 +541,13 @@ int main(int argc, char **argv) return 1; if(lzo_init() != LZO_E_OK) { - logger(LOG_ERR, _("Error initializing LZO compressor!")); + logger(LOG_ERR, "Error initializing LZO compressor!"); return 1; } #ifdef HAVE_MINGW if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "WSAStartup", winerror(GetLastError())); + logger(LOG_ERR, "System call `%s' failed: %s", "WSAStartup", winerror(GetLastError())); return 1; } @@ -479,17 +557,53 @@ int main(int argc, char **argv) return 1; } -int main2(int argc, char **argv) -{ +int main2(int argc, char **argv) { + InitializeCriticalSection(&mutex); + EnterCriticalSection(&mutex); #endif if(!detach()) return 1; - + +#ifdef HAVE_MLOCKALL + /* Lock all pages into memory if requested. + * This has to be done after daemon()/fork() so it works for child. + * No need to do that in parent as it's very short-lived. */ + if(do_mlock && mlockall(MCL_CURRENT | MCL_FUTURE) != 0) { + logger(LOG_ERR, "System call `%s' failed: %s", "mlockall", + strerror(errno)); + return 1; + } +#endif /* Setup sockets and open device. */ - if(!setup_network_connections()) + if(!setup_network()) + goto end; + + /* Initiate all outgoing connections. */ + + try_outgoing_connections(); + + /* Change process priority */ + + char *priority = 0; + + if(get_config_string(lookup_config(config_tree, "ProcessPriority"), &priority)) { + if(!strcasecmp(priority, "Normal")) + setpriority(NORMAL_PRIORITY_CLASS); + else if(!strcasecmp(priority, "Low")) + setpriority(BELOW_NORMAL_PRIORITY_CLASS); + else if(!strcasecmp(priority, "High")) + setpriority(HIGH_PRIORITY_CLASS); + else { + logger(LOG_ERR, "Invalid priority `%s`!", priority); + goto end; + } + } + + /* drop privileges */ + if (!drop_privs()) goto end; /* Start main loop. It only exits when tinc is killed. */ @@ -498,31 +612,26 @@ int main2(int argc, char **argv) /* Shutdown properly. */ - close_network_connections(); - ifdebug(CONNECTIONS) dump_device_stats(); + close_network_connections(); + end: - logger(LOG_NOTICE, _("Terminating")); + logger(LOG_NOTICE, "Terminating"); #ifndef HAVE_MINGW remove_pid(pidfilename); #endif - if (identname) free(identname); - if (netname) free(netname); - if (pidfilename) free(pidfilename); - if (logfilename) free(logfilename); - if (myport) free(myport); - if (device) free(device); - if (confbase) free(confbase); - EVP_cleanup(); ENGINE_cleanup(); CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); ERR_free_strings(); - + + exit_configuration(&config_tree); + free_names(); + return status; } diff --git a/src/uml_socket/device.c b/src/uml_socket/device.c index a7a70fb..3523f64 100644 --- a/src/uml_socket/device.c +++ b/src/uml_socket/device.c @@ -1,7 +1,7 @@ /* device.c -- UML network socket Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2006 Guus Sliepen + 2002-2009 Guus Sliepen 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 @@ -13,11 +13,9 @@ 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. - - $Id: device.c 1374 2004-03-21 14:21:22Z guus $ + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "system.h" @@ -36,9 +34,9 @@ static int request_fd = -1; static int data_fd = -1; static int write_fd = -1; static int state = 0; -char *device; +char *device = NULL; char *iface = NULL; -char *device_info; +static char *device_info; extern char *identname; extern bool running; @@ -57,8 +55,7 @@ static struct request { static struct sockaddr_un data_sun; -bool setup_device(void) -{ +bool setup_device(void) { struct sockaddr_un listen_sun; static const int one = 1; struct { @@ -68,17 +65,15 @@ bool setup_device(void) } name; struct timeval tv; - cp(); - if(!get_config_string(lookup_config(config_tree, "Device"), &device)) - asprintf(&device, LOCALSTATEDIR "/run/%s.umlsocket", identname); + xasprintf(&device, LOCALSTATEDIR "/run/%s.umlsocket", identname); get_config_string(lookup_config(config_tree, "Interface"), &iface); - device_info = _("UML network socket"); + device_info = "UML network socket"; if((write_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) { - logger(LOG_ERR, _("Could not open write %s: %s"), device_info, strerror(errno)); + logger(LOG_ERR, "Could not open write %s: %s", device_info, strerror(errno)); running = false; return false; } @@ -86,13 +81,13 @@ bool setup_device(void) setsockopt(write_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); if(fcntl(write_fd, F_SETFL, O_NONBLOCK) < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno)); running = false; return false; } if((data_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) { - logger(LOG_ERR, _("Could not open data %s: %s"), device_info, strerror(errno)); + logger(LOG_ERR, "Could not open data %s: %s", device_info, strerror(errno)); running = false; return false; } @@ -100,7 +95,7 @@ bool setup_device(void) setsockopt(data_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); if(fcntl(data_fd, F_SETFL, O_NONBLOCK) < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno)); running = false; return false; } @@ -113,13 +108,13 @@ bool setup_device(void) memcpy(&data_sun.sun_path, &name, sizeof name); if(bind(data_fd, (struct sockaddr *)&data_sun, sizeof data_sun) < 0) { - logger(LOG_ERR, _("Could not bind data %s: %s"), device_info, strerror(errno)); + logger(LOG_ERR, "Could not bind data %s: %s", device_info, strerror(errno)); running = false; return false; } if((listen_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { - logger(LOG_ERR, _("Could not open %s: %s"), device_info, + logger(LOG_ERR, "Could not open %s: %s", device_info, strerror(errno)); return false; } @@ -127,26 +122,26 @@ bool setup_device(void) setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno)); return false; } listen_sun.sun_family = AF_UNIX; strncpy(listen_sun.sun_path, device, sizeof listen_sun.sun_path); if(bind(listen_fd, (struct sockaddr *)&listen_sun, sizeof listen_sun) < 0) { - logger(LOG_ERR, _("Could not bind %s to %s: %s"), device_info, device, strerror(errno)); + logger(LOG_ERR, "Could not bind %s to %s: %s", device_info, device, strerror(errno)); return false; } if(listen(listen_fd, 1) < 0) { - logger(LOG_ERR, _("Could not listen on %s %s: %s"), device_info, device, strerror(errno)); + logger(LOG_ERR, "Could not listen on %s %s: %s", device_info, device, strerror(errno)); return false; } device_fd = listen_fd; state = 0; - logger(LOG_INFO, _("%s is a %s"), device, device_info); + logger(LOG_INFO, "%s is a %s", device, device_info); if(routing_mode == RMODE_ROUTER) overwrite_mac = true; @@ -154,10 +149,7 @@ bool setup_device(void) return true; } -void close_device(void) -{ - cp(); - +void close_device(void) { if(listen_fd >= 0) close(listen_fd); @@ -171,14 +163,14 @@ void close_device(void) close(write_fd); unlink(device); + + free(device); + if(iface) free(iface); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { int lenin; - cp(); - switch(state) { case 0: { struct sockaddr sa; @@ -186,12 +178,12 @@ bool read_packet(vpn_packet_t *packet) request_fd = accept(listen_fd, &sa, &salen); if(request_fd < 0) { - logger(LOG_ERR, _("Could not accept connection to %s %s: %s"), device_info, device, strerror(errno)); + logger(LOG_ERR, "Could not accept connection to %s %s: %s", device_info, device, strerror(errno)); return false; } if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) { - logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); + logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno)); running = false; return false; } @@ -206,21 +198,21 @@ bool read_packet(vpn_packet_t *packet) case 1: { if((lenin = read(request_fd, &request, sizeof request)) != sizeof request) { - logger(LOG_ERR, _("Error while reading request from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading request from %s %s: %s", device_info, device, strerror(errno)); running = false; return false; } if(request.magic != 0xfeedface || request.version != 3 || request.type != REQ_NEW_CONTROL) { - logger(LOG_ERR, _("Unknown magic %x, version %d, request type %d from %s %s"), + logger(LOG_ERR, "Unknown magic %x, version %d, request type %d from %s %s", request.magic, request.version, request.type, device_info, device); running = false; return false; } if(connect(write_fd, &request.sock, sizeof request.sock) < 0) { - logger(LOG_ERR, _("Could not bind write %s: %s"), device_info, strerror(errno)); + logger(LOG_ERR, "Could not bind write %s: %s", device_info, strerror(errno)); running = false; return false; } @@ -228,7 +220,7 @@ bool read_packet(vpn_packet_t *packet) write(request_fd, &data_sun, sizeof data_sun); device_fd = data_fd; - logger(LOG_INFO, _("Connection with UML established")); + logger(LOG_INFO, "Connection with UML established"); state = 2; return false; @@ -236,7 +228,7 @@ bool read_packet(vpn_packet_t *packet) case 2: { if((lenin = read(data_fd, packet->data, MTU)) <= 0) { - logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, + logger(LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); running = false; return false; @@ -246,7 +238,7 @@ bool read_packet(vpn_packet_t *packet) device_total_in += packet->len; - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len, device_info); return true; @@ -254,22 +246,19 @@ bool read_packet(vpn_packet_t *packet) } } -bool write_packet(vpn_packet_t *packet) -{ - cp(); - +bool write_packet(vpn_packet_t *packet) { if(state != 2) { - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Dropping packet of %d bytes to %s: not connected to UML yet"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Dropping packet of %d bytes to %s: not connected to UML yet", packet->len, device_info); return false; } - ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), + ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s", packet->len, device_info); if(write(write_fd, packet->data, packet->len) < 0) { if(errno != EINTR && errno != EAGAIN) { - logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, strerror(errno)); + logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno)); running = false; } @@ -281,11 +270,8 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ - cp(); - - logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); - logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); - logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); +void dump_device_stats(void) { + logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device); + logger(LOG_DEBUG, " total bytes in: %10d", device_total_in); + logger(LOG_DEBUG, " total bytes out: %10d", device_total_out); } diff --git a/system.h b/system.h index a67498f..dfb4c6d 100644 --- a/system.h +++ b/system.h @@ -13,9 +13,9 @@ 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 + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_SYSTEM_H__ @@ -31,10 +31,6 @@ typedef int bool; #define false 0 #endif -/* Include localisation support */ - -#include "gettext.h" - #ifndef HAVE_STRSIGNAL # define strsignal(p) "" #endif