Install tinc as a service under Windows (MinGW). Remove cleanup_and_exit(),
either exit() directly on errors or let main_loop() shutdown gracefully.
This commit is contained in:
parent
7c34122af7
commit
f08fc359a0
9 changed files with 410 additions and 175 deletions
14
lib/utils.c
14
lib/utils.c
|
@ -79,3 +79,17 @@ void cp_trace()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_MINGW
|
||||||
|
char *winerror(int err) {
|
||||||
|
static char buf[1024];
|
||||||
|
|
||||||
|
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));
|
||||||
|
};
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -38,4 +38,8 @@ extern void cp_trace(void);
|
||||||
extern void hex2bin(char *src, char *dst, int length);
|
extern void hex2bin(char *src, char *dst, int length);
|
||||||
extern void bin2hex(char *src, char *dst, int length);
|
extern void bin2hex(char *src, char *dst, int length);
|
||||||
|
|
||||||
|
#ifdef HAVE_MINGW
|
||||||
|
extern char *winerror(int);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __TINC_UTILS_H__ */
|
#endif /* __TINC_UTILS_H__ */
|
||||||
|
|
299
po/nl.po
299
po/nl.po
|
@ -6,7 +6,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: tinc 1.0-cvs\n"
|
"Project-Id-Version: tinc 1.0-cvs\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2003-07-29 13:04+0200\n"
|
"POT-Creation-Date: 2003-08-02 17:51+0200\n"
|
||||||
"PO-Revision-Date: 2003-05-06 23:10+0200\n"
|
"PO-Revision-Date: 2003-05-06 23:10+0200\n"
|
||||||
"Last-Translator: Guus Sliepen <guus@sliepen.eu.org>\n"
|
"Last-Translator: Guus Sliepen <guus@sliepen.eu.org>\n"
|
||||||
"Language-Team: Dutch <vertaling@nl.linux.org>\n"
|
"Language-Team: Dutch <vertaling@nl.linux.org>\n"
|
||||||
|
@ -46,69 +46,69 @@ msgstr ""
|
||||||
"Netwerk adres en prefix lengte komen niet overeen bij configuratievariabele %"
|
"Netwerk adres en prefix lengte komen niet overeen bij configuratievariabele %"
|
||||||
"s in %s regel %d"
|
"s in %s regel %d"
|
||||||
|
|
||||||
#: src/conf.c:338
|
#: src/conf.c:339
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot open config file %s: %s"
|
msgid "Cannot open config file %s: %s"
|
||||||
msgstr "Kan configuratie bestand %s niet openen: %s"
|
msgstr "Kan configuratie bestand %s niet openen: %s"
|
||||||
|
|
||||||
#: src/conf.c:376
|
#: src/conf.c:388
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No value for variable `%s' on line %d while reading config file %s"
|
msgid "No value for variable `%s' on line %d while reading config file %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Geen waarde voor variabele `%s' op regel %d tijdens het lezen van "
|
"Geen waarde voor variabele `%s' op regel %d tijdens het lezen van "
|
||||||
"configuratie bestand %s"
|
"configuratie bestand %s"
|
||||||
|
|
||||||
#: src/conf.c:411
|
#: src/conf.c:419
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to read `%s': %s"
|
msgid "Failed to read `%s': %s"
|
||||||
msgstr "Lezen van `%s' mislukte: %s"
|
msgstr "Lezen van `%s' mislukte: %s"
|
||||||
|
|
||||||
#: src/conf.c:429
|
#: src/conf.c:437
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is not an absolute path"
|
msgid "`%s' is not an absolute path"
|
||||||
msgstr "`%s' is geen absoluut pad"
|
msgstr "`%s' is geen absoluut pad"
|
||||||
|
|
||||||
#: src/conf.c:445 src/conf.c:473
|
#: src/conf.c:453 src/conf.c:481
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Couldn't stat `%s': %s"
|
msgid "Couldn't stat `%s': %s"
|
||||||
msgstr "Kon `%s' niet statten: %s"
|
msgstr "Kon `%s' niet statten: %s"
|
||||||
|
|
||||||
#: src/conf.c:450 src/conf.c:481
|
#: src/conf.c:458 src/conf.c:489
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is owned by UID %d instead of %d"
|
msgid "`%s' is owned by UID %d instead of %d"
|
||||||
msgstr "`%s' is eigendom van UID %d in plaats van %d"
|
msgstr "`%s' is eigendom van UID %d in plaats van %d"
|
||||||
|
|
||||||
#: src/conf.c:456 src/conf.c:487
|
#: src/conf.c:464 src/conf.c:495
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Warning: `%s' is a symlink"
|
msgid "Warning: `%s' is a symlink"
|
||||||
msgstr "Waarschuwing: `%s' is een symbolische link"
|
msgstr "Waarschuwing: `%s' is een symbolische link"
|
||||||
|
|
||||||
#: src/conf.c:459 src/conf.c:490
|
#: src/conf.c:467 src/conf.c:498
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unable to read symbolic link `%s': %s"
|
msgid "Unable to read symbolic link `%s': %s"
|
||||||
msgstr "Kan symbolische link `%s' niet lezen: %s"
|
msgstr "Kan symbolische link `%s' niet lezen: %s"
|
||||||
|
|
||||||
#: src/conf.c:501
|
#: src/conf.c:509
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' has unsecure permissions"
|
msgid "`%s' has unsecure permissions"
|
||||||
msgstr "`%s' heeft onveilige permissies"
|
msgstr "`%s' heeft onveilige permissies"
|
||||||
|
|
||||||
#: src/conf.c:523
|
#: src/conf.c:531
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please enter a file to save %s to [%s]: "
|
msgid "Please enter a file to save %s to [%s]: "
|
||||||
msgstr "Geef een bestand om de %s naar de schrijven [%s]: "
|
msgstr "Geef een bestand om de %s naar de schrijven [%s]: "
|
||||||
|
|
||||||
#: src/conf.c:530
|
#: src/conf.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while reading stdin: %s\n"
|
msgid "Error while reading stdin: %s\n"
|
||||||
msgstr "Fout tijdens lezen van standaardinvoer: %s\n"
|
msgstr "Fout tijdens lezen van standaardinvoer: %s\n"
|
||||||
|
|
||||||
#: src/conf.c:558
|
#: src/conf.c:566
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error opening file `%s': %s\n"
|
msgid "Error opening file `%s': %s\n"
|
||||||
msgstr "Fout bij het openen van het bestand `%s': %s\n"
|
msgstr "Fout bij het openen van het bestand `%s': %s\n"
|
||||||
|
|
||||||
#: src/conf.c:567
|
#: src/conf.c:575
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The file `%s' (or any of the leading directories) has unsafe permissions.\n"
|
"The file `%s' (or any of the leading directories) has unsafe permissions.\n"
|
||||||
|
@ -174,56 +174,56 @@ msgstr "Fout op metadata socket voor %s (%s) tijdens lezen: %s"
|
||||||
msgid "Metadata read buffer overflow for %s (%s)"
|
msgid "Metadata read buffer overflow for %s (%s)"
|
||||||
msgstr "Metadata leesbuffer overloop voor %s (%s)"
|
msgstr "Metadata leesbuffer overloop voor %s (%s)"
|
||||||
|
|
||||||
#: src/net.c:58
|
#: src/net.c:59
|
||||||
msgid "Purging unreachable nodes"
|
msgid "Purging unreachable nodes"
|
||||||
msgstr "Verwijderen onbereikbare nodes"
|
msgstr "Verwijderen onbereikbare nodes"
|
||||||
|
|
||||||
#: src/net.c:65
|
#: src/net.c:66
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Purging node %s (%s)"
|
msgid "Purging node %s (%s)"
|
||||||
msgstr "Verwijdering node %s (%s)"
|
msgstr "Verwijdering node %s (%s)"
|
||||||
|
|
||||||
#: src/net.c:146
|
#: src/net.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Closing connection with %s (%s)"
|
msgid "Closing connection with %s (%s)"
|
||||||
msgstr "Beëindigen verbinding met %s (%s)"
|
msgstr "Beëindigen verbinding met %s (%s)"
|
||||||
|
|
||||||
#: src/net.c:199
|
#: src/net.c:200
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (%s) didn't respond to PING"
|
msgid "%s (%s) didn't respond to PING"
|
||||||
msgstr "%s (%s) antwoordde niet op ping"
|
msgstr "%s (%s) antwoordde niet op ping"
|
||||||
|
|
||||||
#: src/net.c:208
|
#: src/net.c:209
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..."
|
msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Oude connection_t voor %s (%s) status %04x nog steeds aanwezig, wordt "
|
"Oude connection_t voor %s (%s) status %04x nog steeds aanwezig, wordt "
|
||||||
"verwijderd..."
|
"verwijderd..."
|
||||||
|
|
||||||
#: src/net.c:213
|
#: src/net.c:214
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Timeout from %s (%s) during authentication"
|
msgid "Timeout from %s (%s) during authentication"
|
||||||
msgstr "Timeout van %s (%s) tijdens authenticatie"
|
msgstr "Timeout van %s (%s) tijdens authenticatie"
|
||||||
|
|
||||||
#: src/net.c:255
|
#: src/net.c:256
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while connecting to %s (%s): %s"
|
msgid "Error while connecting to %s (%s): %s"
|
||||||
msgstr "Fout tijdens schrijven naar %s (%s): %s"
|
msgstr "Fout tijdens schrijven naar %s (%s): %s"
|
||||||
|
|
||||||
#: src/net.c:308
|
#: src/net.c:309
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while waiting for input: %s"
|
msgid "Error while waiting for input: %s"
|
||||||
msgstr "Fout tijdens wachten op invoer: %s"
|
msgstr "Fout tijdens wachten op invoer: %s"
|
||||||
|
|
||||||
#: src/net.c:339
|
#: src/net.c:340
|
||||||
msgid "Regenerating symmetric key"
|
msgid "Regenerating symmetric key"
|
||||||
msgstr "Hergenereren symmetrische sleutel"
|
msgstr "Hergenereren symmetrische sleutel"
|
||||||
|
|
||||||
#: src/net.c:356
|
#: src/net.c:357
|
||||||
msgid "Flushing event queue"
|
msgid "Flushing event queue"
|
||||||
msgstr "Legen taakrij"
|
msgstr "Legen taakrij"
|
||||||
|
|
||||||
#: src/net.c:380
|
#: src/net.c:381
|
||||||
msgid "Unable to reread configuration file, exitting."
|
msgid "Unable to reread configuration file, exitting."
|
||||||
msgstr "Kan configuratiebestand niet herlezen, beëindigen."
|
msgstr "Kan configuratiebestand niet herlezen, beëindigen."
|
||||||
|
|
||||||
|
@ -269,9 +269,13 @@ msgstr "Fout tijdens comprimeren pakket naar %s (%s)"
|
||||||
msgid "Setting outgoing packet priority to %d"
|
msgid "Setting outgoing packet priority to %d"
|
||||||
msgstr "Instellen prioriteit uitgaand pakket op %d"
|
msgstr "Instellen prioriteit uitgaand pakket op %d"
|
||||||
|
|
||||||
#: src/net_packet.c:309 src/net_setup.c:459 src/net_socket.c:74
|
#: src/net_packet.c:309 src/net_setup.c:457 src/net_socket.c:74
|
||||||
#: src/net_socket.c:122 src/net_socket.c:153 src/tincd.c:388 src/process.c:261
|
#: src/net_socket.c:122 src/net_socket.c:153 src/tincd.c:394 src/tincd.c:428
|
||||||
#: src/process.c:289 src/cygwin/device.c:150 src/cygwin/device.c:181
|
#: src/process.c:389 src/process.c:417 src/cygwin/device.c:155
|
||||||
|
#: src/cygwin/device.c:186 src/mingw/device.c:81 src/mingw/device.c:90
|
||||||
|
#: src/mingw/device.c:95 src/mingw/device.c:247 src/mingw/device.c:254
|
||||||
|
#: src/mingw/device.c:259 src/mingw/device.c:266 src/mingw/device.c:275
|
||||||
|
#: src/mingw/device.c:282
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "System call `%s' failed: %s"
|
msgid "System call `%s' failed: %s"
|
||||||
msgstr "Systeemaanroep `%s' mislukte: %s"
|
msgstr "Systeemaanroep `%s' mislukte: %s"
|
||||||
|
@ -407,16 +411,16 @@ msgstr "Onzinnige MAC lengte!"
|
||||||
msgid "Bogus compression level!"
|
msgid "Bogus compression level!"
|
||||||
msgstr "Onzinnig compressieniveau!"
|
msgstr "Onzinnig compressieniveau!"
|
||||||
|
|
||||||
#: src/net_setup.c:481
|
#: src/net_setup.c:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Listening on %s"
|
msgid "Listening on %s"
|
||||||
msgstr "Luisterend op %s"
|
msgstr "Luisterend op %s"
|
||||||
|
|
||||||
#: src/net_setup.c:492
|
#: src/net_setup.c:490
|
||||||
msgid "Ready"
|
msgid "Ready"
|
||||||
msgstr "Gereed"
|
msgstr "Gereed"
|
||||||
|
|
||||||
#: src/net_setup.c:494
|
#: src/net_setup.c:492
|
||||||
msgid "Unable to create any listening socket!"
|
msgid "Unable to create any listening socket!"
|
||||||
msgstr "Kon geen enkele luistersocket aanmaken!"
|
msgstr "Kon geen enkele luistersocket aanmaken!"
|
||||||
|
|
||||||
|
@ -509,27 +513,27 @@ msgstr "Verbinding van %s"
|
||||||
msgid "Invalid name for outgoing connection in %s line %d"
|
msgid "Invalid name for outgoing connection in %s line %d"
|
||||||
msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d"
|
msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d"
|
||||||
|
|
||||||
#: src/netutl.c:52 src/netutl.c:77
|
#: src/netutl.c:50 src/netutl.c:73
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error looking up %s port %s: %s\n"
|
msgid "Error looking up %s port %s: %s\n"
|
||||||
msgstr "Fout bij het opzoeken van %s poort %s: %s\n"
|
msgstr "Fout bij het opzoeken van %s poort %s: %s\n"
|
||||||
|
|
||||||
#: src/netutl.c:102
|
#: src/netutl.c:98
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while translating addresses: %s"
|
msgid "Error while translating addresses: %s"
|
||||||
msgstr "Fout tijdens vertalen adressen: %s"
|
msgstr "Fout tijdens vertalen adressen: %s"
|
||||||
|
|
||||||
#: src/netutl.c:130
|
#: src/netutl.c:126
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while looking up hostname: %s"
|
msgid "Error while looking up hostname: %s"
|
||||||
msgstr "Fout bij het opzoeken van hostnaam: %s"
|
msgstr "Fout bij het opzoeken van hostnaam: %s"
|
||||||
|
|
||||||
#: src/netutl.c:134
|
#: src/netutl.c:130
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s port %s"
|
msgid "%s port %s"
|
||||||
msgstr "%s poort %s"
|
msgstr "%s poort %s"
|
||||||
|
|
||||||
#: src/netutl.c:171
|
#: src/netutl.c:167
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "sockaddrcmp() was called with unknown address family %d, exitting!"
|
msgid "sockaddrcmp() was called with unknown address family %d, exitting!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -595,11 +599,11 @@ msgstr "Fout tijdens afhandelen %s van %s (%s)"
|
||||||
msgid "Bogus data received from %s (%s)"
|
msgid "Bogus data received from %s (%s)"
|
||||||
msgstr "Onzinnige data ontvangen van %s (%s)"
|
msgstr "Onzinnige data ontvangen van %s (%s)"
|
||||||
|
|
||||||
#: src/protocol.c:220
|
#: src/protocol.c:219
|
||||||
msgid "Already seen request"
|
msgid "Already seen request"
|
||||||
msgstr "Verzoek reeds gezien"
|
msgstr "Verzoek reeds gezien"
|
||||||
|
|
||||||
#: src/protocol.c:250
|
#: src/protocol.c:249
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Aging past requests: deleted %d, left %d\n"
|
msgid "Aging past requests: deleted %d, left %d\n"
|
||||||
msgstr "Veroudering vorige verzoeken: %d gewist, %d overgebleven\n"
|
msgstr "Veroudering vorige verzoeken: %d gewist, %d overgebleven\n"
|
||||||
|
@ -801,25 +805,25 @@ msgstr ""
|
||||||
msgid "net2str() was called with unknown subnet type %d, exiting!"
|
msgid "net2str() was called with unknown subnet type %d, exiting!"
|
||||||
msgstr "net2str() werd aangeroepen met onbekend subnet type %d, beëindigen!"
|
msgstr "net2str() werd aangeroepen met onbekend subnet type %d, beëindigen!"
|
||||||
|
|
||||||
#: src/subnet.c:406
|
#: src/subnet.c:403
|
||||||
msgid "Subnet list:"
|
msgid "Subnet list:"
|
||||||
msgstr "Subnet lijst:"
|
msgstr "Subnet lijst:"
|
||||||
|
|
||||||
#: src/subnet.c:411
|
#: src/subnet.c:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %s owner %s"
|
msgid " %s owner %s"
|
||||||
msgstr " %s eigenaar %s"
|
msgstr " %s eigenaar %s"
|
||||||
|
|
||||||
#: src/subnet.c:415
|
#: src/subnet.c:412
|
||||||
msgid "End of subnet list."
|
msgid "End of subnet list."
|
||||||
msgstr "Einde van subnet lijst."
|
msgstr "Einde van subnet lijst."
|
||||||
|
|
||||||
#: src/tincd.c:99
|
#: src/tincd.c:105
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "Probeer `%s --help' voor meer informatie.\n"
|
msgstr "Probeer `%s --help' voor meer informatie.\n"
|
||||||
|
|
||||||
#: src/tincd.c:102
|
#: src/tincd.c:108
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: %s [option]...\n"
|
"Usage: %s [option]...\n"
|
||||||
|
@ -828,7 +832,7 @@ msgstr ""
|
||||||
"Gebruik: %s [optie]...\n"
|
"Gebruik: %s [optie]...\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: src/tincd.c:103
|
#: src/tincd.c:109
|
||||||
msgid ""
|
msgid ""
|
||||||
" -c, --config=DIR Read configuration options from DIR.\n"
|
" -c, --config=DIR Read configuration options from DIR.\n"
|
||||||
" -D, --no-detach Don't fork and detach.\n"
|
" -D, --no-detach Don't fork and detach.\n"
|
||||||
|
@ -857,13 +861,13 @@ msgstr ""
|
||||||
" --version Geef versie informatie en beëindig.\n"
|
" --version Geef versie informatie en beëindig.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
||||||
#: src/tincd.c:114
|
#: src/tincd.c:120
|
||||||
msgid "Report bugs to tinc@nl.linux.org.\n"
|
msgid "Report bugs to tinc@nl.linux.org.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Meld fouten in het programma aan tinc@nl.linux.org;\n"
|
"Meld fouten in het programma aan tinc@nl.linux.org;\n"
|
||||||
"Meld fouten in de vertaling aan vertaling@nl.linux.org.\n"
|
"Meld fouten in de vertaling aan vertaling@nl.linux.org.\n"
|
||||||
|
|
||||||
#: src/tincd.c:172
|
#: src/tincd.c:178
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, "
|
"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, "
|
||||||
|
@ -872,7 +876,7 @@ msgstr ""
|
||||||
"Ongeldig argument `%s'; SIGNAAL moet een getal zijn of één van HUP, TERM, "
|
"Ongeldig argument `%s'; SIGNAAL moet een getal zijn of één van HUP, TERM, "
|
||||||
"KILL, USR1, USR2, WINCH, INT of ALRM.\n"
|
"KILL, USR1, USR2, WINCH, INT of ALRM.\n"
|
||||||
|
|
||||||
#: src/tincd.c:191
|
#: src/tincd.c:197
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"
|
"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"
|
||||||
|
@ -880,24 +884,24 @@ msgstr ""
|
||||||
"Ongeldig argument `%s'; BITS moet een nummer zijn gelijk aan of groter dan "
|
"Ongeldig argument `%s'; BITS moet een nummer zijn gelijk aan of groter dan "
|
||||||
"512.\n"
|
"512.\n"
|
||||||
|
|
||||||
#: src/tincd.c:280
|
#: src/tincd.c:286
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Generating %d bits keys:\n"
|
msgid "Generating %d bits keys:\n"
|
||||||
msgstr "Bezig met genereren van een %d bits sleutel:\n"
|
msgstr "Bezig met genereren van een %d bits sleutel:\n"
|
||||||
|
|
||||||
#: src/tincd.c:284
|
#: src/tincd.c:290
|
||||||
msgid "Error during key generation!\n"
|
msgid "Error during key generation!\n"
|
||||||
msgstr "Fout tijdens genereren sleutel!\n"
|
msgstr "Fout tijdens genereren sleutel!\n"
|
||||||
|
|
||||||
#: src/tincd.c:287
|
#: src/tincd.c:293
|
||||||
msgid "Done.\n"
|
msgid "Done.\n"
|
||||||
msgstr "Klaar.\n"
|
msgstr "Klaar.\n"
|
||||||
|
|
||||||
#: src/tincd.c:290
|
#: src/tincd.c:296
|
||||||
msgid "private RSA key"
|
msgid "private RSA key"
|
||||||
msgstr "geheime RSA sleutel"
|
msgstr "geheime RSA sleutel"
|
||||||
|
|
||||||
#: src/tincd.c:296 src/tincd.c:315
|
#: src/tincd.c:302 src/tincd.c:321
|
||||||
msgid ""
|
msgid ""
|
||||||
"Appending key to existing contents.\n"
|
"Appending key to existing contents.\n"
|
||||||
"Make sure only one key is stored in the file.\n"
|
"Make sure only one key is stored in the file.\n"
|
||||||
|
@ -905,21 +909,21 @@ msgstr ""
|
||||||
"Sleutel wordt toegevoegd aan bestaande inhoud.\n"
|
"Sleutel wordt toegevoegd aan bestaande inhoud.\n"
|
||||||
"Let er op dat er slechts één sleutel in het bestand is.\n"
|
"Let er op dat er slechts één sleutel in het bestand is.\n"
|
||||||
|
|
||||||
#: src/tincd.c:309
|
#: src/tincd.c:315
|
||||||
msgid "public RSA key"
|
msgid "public RSA key"
|
||||||
msgstr "openbare RSA sleutel"
|
msgstr "openbare RSA sleutel"
|
||||||
|
|
||||||
#: src/tincd.c:344
|
#: src/tincd.c:350
|
||||||
msgid "Both netname and configuration directory given, using the latter..."
|
msgid "Both netname and configuration directory given, using the latter..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Zowel netnaam als configuratiemap zijn gegeven, laatste wordt gebruikt..."
|
"Zowel netnaam als configuratiemap zijn gegeven, laatste wordt gebruikt..."
|
||||||
|
|
||||||
#: src/tincd.c:364
|
#: src/tincd.c:370
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s version %s (built %s %s, protocol %d)\n"
|
msgid "%s version %s (built %s %s, protocol %d)\n"
|
||||||
msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n"
|
msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n"
|
||||||
|
|
||||||
#: src/tincd.c:366
|
#: src/tincd.c:372
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright (C) 1998-2003 Ivo Timmermans, Guus Sliepen and others.\n"
|
"Copyright (C) 1998-2003 Ivo Timmermans, Guus Sliepen and others.\n"
|
||||||
"See the AUTHORS file for a complete list.\n"
|
"See the AUTHORS file for a complete list.\n"
|
||||||
|
@ -936,24 +940,24 @@ msgstr ""
|
||||||
"en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n"
|
"en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n"
|
||||||
"zie het bestand COPYING voor details.\n"
|
"zie het bestand COPYING voor details.\n"
|
||||||
|
|
||||||
#: src/tincd.c:392
|
#: src/tincd.c:398
|
||||||
msgid "mlockall() not supported on this platform!"
|
msgid "mlockall() not supported on this platform!"
|
||||||
msgstr "mlockall() wordt niet ondersteund op dit platform!"
|
msgstr "mlockall() wordt niet ondersteund op dit platform!"
|
||||||
|
|
||||||
#: src/tincd.c:416
|
#: src/tincd.c:422
|
||||||
msgid "Error initializing LZO compressor!"
|
msgid "Error initializing LZO compressor!"
|
||||||
msgstr "Fout tijdens initialiseren LZO compressor!"
|
msgstr "Fout tijdens initialiseren LZO compressor!"
|
||||||
|
|
||||||
#: src/tincd.c:429
|
#: src/tincd.c:442
|
||||||
msgid "Unrecoverable error"
|
msgid "Unrecoverable error"
|
||||||
msgstr "Onherstelbare fout"
|
msgstr "Onherstelbare fout"
|
||||||
|
|
||||||
#: src/tincd.c:433
|
#: src/tincd.c:446
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Restarting in %d seconds!"
|
msgid "Restarting in %d seconds!"
|
||||||
msgstr "Herstart in %d seconden!"
|
msgstr "Herstart in %d seconden!"
|
||||||
|
|
||||||
#: src/tincd.c:436 src/process.c:352
|
#: src/tincd.c:449 src/process.c:480
|
||||||
msgid "Not restarting."
|
msgid "Not restarting."
|
||||||
msgstr "Geen herstart."
|
msgstr "Geen herstart."
|
||||||
|
|
||||||
|
@ -966,105 +970,150 @@ msgstr "Geheugen uitgeput (kon geen %d bytes reserveren), beëindigen."
|
||||||
msgid "Terminating"
|
msgid "Terminating"
|
||||||
msgstr "Beëindigen"
|
msgstr "Beëindigen"
|
||||||
|
|
||||||
#: src/process.c:105
|
#: src/process.c:107 src/process.c:148
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Could not open service manager"
|
||||||
|
msgstr "Kon `%s' niet twee keer openen: %s"
|
||||||
|
|
||||||
|
#: src/process.c:114
|
||||||
|
#, c-format
|
||||||
|
msgid "%s service already installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/process.c:132
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Could not create service: %d"
|
||||||
|
msgstr "Kon `%s' niet twee keer openen: %s"
|
||||||
|
|
||||||
|
#: src/process.c:136
|
||||||
|
#, c-format
|
||||||
|
msgid "%s service installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/process.c:140
|
||||||
|
#, c-format
|
||||||
|
msgid "%s service started"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/process.c:155
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Could not open service"
|
||||||
|
msgstr "Kon `%s' niet twee keer openen: %s"
|
||||||
|
|
||||||
|
#: src/process.c:160
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Could not remove service"
|
||||||
|
msgstr "Kon `%s' niet twee keer openen: %s"
|
||||||
|
|
||||||
|
#: src/process.c:164
|
||||||
|
#, c-format
|
||||||
|
msgid "%s service removed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/process.c:203
|
||||||
|
#, c-format
|
||||||
|
msgid "Error starting service control dispatcher: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/process.c:226
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A tincd is already running for net `%s' with pid %d.\n"
|
msgid "A tincd is already running for net `%s' with pid %d.\n"
|
||||||
msgstr "Een tincd draait al voor net `%s' met pid %d.\n"
|
msgstr "Een tincd draait al voor net `%s' met pid %d.\n"
|
||||||
|
|
||||||
#: src/process.c:108
|
#: src/process.c:229
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "A tincd is already running with pid %d.\n"
|
msgid "A tincd is already running with pid %d.\n"
|
||||||
msgstr "Een tincd draait al met pid %d.\n"
|
msgstr "Een tincd draait al met pid %d.\n"
|
||||||
|
|
||||||
#: src/process.c:134
|
#: src/process.c:255
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No other tincd is running for net `%s'.\n"
|
msgid "No other tincd is running for net `%s'.\n"
|
||||||
msgstr "Geen andere tincd draait voor net `%s'.\n"
|
msgstr "Geen andere tincd draait voor net `%s'.\n"
|
||||||
|
|
||||||
#: src/process.c:137
|
#: src/process.c:258
|
||||||
msgid "No other tincd is running.\n"
|
msgid "No other tincd is running.\n"
|
||||||
msgstr "Geen andere tincd draait.\n"
|
msgstr "Geen andere tincd draait.\n"
|
||||||
|
|
||||||
#: src/process.c:146
|
#: src/process.c:267
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The tincd for net `%s' is no longer running. "
|
msgid "The tincd for net `%s' is no longer running. "
|
||||||
msgstr "De tincd voor net `%s' draait niet meer. "
|
msgstr "De tincd voor net `%s' draait niet meer. "
|
||||||
|
|
||||||
#: src/process.c:149
|
#: src/process.c:270
|
||||||
msgid "The tincd is no longer running. "
|
msgid "The tincd is no longer running. "
|
||||||
msgstr "De tincd draait niet meer. "
|
msgstr "De tincd draait niet meer. "
|
||||||
|
|
||||||
#: src/process.c:151
|
#: src/process.c:272
|
||||||
msgid "Removing stale lock file.\n"
|
msgid "Removing stale lock file.\n"
|
||||||
msgstr "Verwijdering oud vergrendelingsbestand.\n"
|
msgstr "Verwijdering oud vergrendelingsbestand.\n"
|
||||||
|
|
||||||
#: src/process.c:182
|
#: src/process.c:305
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Couldn't detach from terminal: %s"
|
msgid "Couldn't detach from terminal: %s"
|
||||||
msgstr "Kon niet ontkoppelen van terminal: %s"
|
msgstr "Kon niet ontkoppelen van terminal: %s"
|
||||||
|
|
||||||
#: src/process.c:196
|
#: src/process.c:324
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "tincd %s (%s %s) starting, debug level %d"
|
msgid "tincd %s (%s %s) starting, debug level %d"
|
||||||
msgstr "tincd %s (%s %s) start, debug niveau %d"
|
msgstr "tincd %s (%s %s) start, debug niveau %d"
|
||||||
|
|
||||||
#: src/process.c:232
|
#: src/process.c:360
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Could not execute `%s': %s"
|
msgid "Could not execute `%s': %s"
|
||||||
msgstr "Kon `%s' niet uitvoeren: %s"
|
msgstr "Kon `%s' niet uitvoeren: %s"
|
||||||
|
|
||||||
#: src/process.c:267
|
#: src/process.c:395
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Executing script %s"
|
msgid "Executing script %s"
|
||||||
msgstr "Uitvoeren script %s"
|
msgstr "Uitvoeren script %s"
|
||||||
|
|
||||||
#: src/process.c:274
|
#: src/process.c:402
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Process %d (%s) exited with non-zero status %d"
|
msgid "Process %d (%s) exited with non-zero status %d"
|
||||||
msgstr "Proces %d (%s) beëindigde met status %d"
|
msgstr "Proces %d (%s) beëindigde met status %d"
|
||||||
|
|
||||||
#: src/process.c:280
|
#: src/process.c:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Process %d (%s) was killed by signal %d (%s)"
|
msgid "Process %d (%s) was killed by signal %d (%s)"
|
||||||
msgstr "Proces %d (%s) was gestopt door signaal %d (%s)"
|
msgstr "Proces %d (%s) was gestopt door signaal %d (%s)"
|
||||||
|
|
||||||
#: src/process.c:284
|
#: src/process.c:412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Process %d (%s) terminated abnormally"
|
msgid "Process %d (%s) terminated abnormally"
|
||||||
msgstr "Proces %d (%s) abnormaal beëindigd"
|
msgstr "Proces %d (%s) abnormaal beëindigd"
|
||||||
|
|
||||||
#: src/process.c:314
|
#: src/process.c:442
|
||||||
msgid "Got TERM signal"
|
msgid "Got TERM signal"
|
||||||
msgstr "Kreeg TERM signaal"
|
msgstr "Kreeg TERM signaal"
|
||||||
|
|
||||||
#: src/process.c:321
|
#: src/process.c:449
|
||||||
msgid "Got QUIT signal"
|
msgid "Got QUIT signal"
|
||||||
msgstr "Kreeg QUIT signaal"
|
msgstr "Kreeg QUIT signaal"
|
||||||
|
|
||||||
#: src/process.c:327
|
#: src/process.c:455
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Got another fatal signal %d (%s): not restarting."
|
msgid "Got another fatal signal %d (%s): not restarting."
|
||||||
msgstr "Kreeg nog een fataal signaal %d (%s): geen herstart."
|
msgstr "Kreeg nog een fataal signaal %d (%s): geen herstart."
|
||||||
|
|
||||||
#: src/process.c:336
|
#: src/process.c:464
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Got fatal signal %d (%s)"
|
msgid "Got fatal signal %d (%s)"
|
||||||
msgstr "Kreeg fataal signaal %d (%s)"
|
msgstr "Kreeg fataal signaal %d (%s)"
|
||||||
|
|
||||||
#: src/process.c:340
|
#: src/process.c:468
|
||||||
msgid "Trying to re-execute in 5 seconds..."
|
msgid "Trying to re-execute in 5 seconds..."
|
||||||
msgstr "Poging tot herstarten over 5 seconden..."
|
msgstr "Poging tot herstarten over 5 seconden..."
|
||||||
|
|
||||||
#: src/process.c:359
|
#: src/process.c:487
|
||||||
msgid "Got HUP signal"
|
msgid "Got HUP signal"
|
||||||
msgstr "Kreeg HUP signaal"
|
msgstr "Kreeg HUP signaal"
|
||||||
|
|
||||||
#: src/process.c:366
|
#: src/process.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Reverting to old debug level (%d)"
|
msgid "Reverting to old debug level (%d)"
|
||||||
msgstr "Herstellen van oud debug niveau (%d)"
|
msgstr "Herstellen van oud debug niveau (%d)"
|
||||||
|
|
||||||
#: src/process.c:372
|
#: src/process.c:500
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Temporarily setting debug level to 5. Kill me with SIGINT again to go back "
|
"Temporarily setting debug level to 5. Kill me with SIGINT again to go back "
|
||||||
|
@ -1073,41 +1122,41 @@ msgstr ""
|
||||||
"Tijdelijk instellen debug niveau op 5. Zend nog een SIGINT signaal om niveau "
|
"Tijdelijk instellen debug niveau op 5. Zend nog een SIGINT signaal om niveau "
|
||||||
"%d te herstellen."
|
"%d te herstellen."
|
||||||
|
|
||||||
#: src/process.c:381
|
#: src/process.c:509
|
||||||
msgid "Got ALRM signal"
|
msgid "Got ALRM signal"
|
||||||
msgstr "Kreeg ALRM signaal"
|
msgstr "Kreeg ALRM signaal"
|
||||||
|
|
||||||
#: src/process.c:405
|
#: src/process.c:533
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Got unexpected signal %d (%s)"
|
msgid "Got unexpected signal %d (%s)"
|
||||||
msgstr "Kreeg onverwacht signaal %d (%s)"
|
msgstr "Kreeg onverwacht signaal %d (%s)"
|
||||||
|
|
||||||
#: src/process.c:411
|
#: src/process.c:539
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Ignored signal %d (%s)"
|
msgid "Ignored signal %d (%s)"
|
||||||
msgstr "Signaal %d (%s) genegeerd"
|
msgstr "Signaal %d (%s) genegeerd"
|
||||||
|
|
||||||
#: src/process.c:465
|
#: src/process.c:593
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Installing signal handler for signal %d (%s) failed: %s\n"
|
msgid "Installing signal handler for signal %d (%s) failed: %s\n"
|
||||||
msgstr "Installeren van signaal afhandelaar voor signaal %d (%s) faalde: %s\n"
|
msgstr "Installeren van signaal afhandelaar voor signaal %d (%s) faalde: %s\n"
|
||||||
|
|
||||||
#: src/route.c:107
|
#: src/route.c:104
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"
|
msgid "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"
|
||||||
msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd"
|
msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd"
|
||||||
|
|
||||||
#: src/route.c:140
|
#: src/route.c:137
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "MAC address %hx:%hx:%hx:%hx:%hx:%hx expired"
|
msgid "MAC address %hx:%hx:%hx:%hx:%hx:%hx expired"
|
||||||
msgstr "MAC adres %hx:%hx:%hx:%hx:%hx:%hx verlopen"
|
msgstr "MAC adres %hx:%hx:%hx:%hx:%hx:%hx verlopen"
|
||||||
|
|
||||||
#: src/route.c:249
|
#: src/route.c:246
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot route packet: unknown IPv4 destination address %d.%d.%d.%d"
|
msgid "Cannot route packet: unknown IPv4 destination address %d.%d.%d.%d"
|
||||||
msgstr "Kan pakket niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d"
|
msgstr "Kan pakket niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d"
|
||||||
|
|
||||||
#: src/route.c:340
|
#: src/route.c:337
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Cannot route packet: unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%"
|
"Cannot route packet: unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%"
|
||||||
|
@ -1116,19 +1165,19 @@ msgstr ""
|
||||||
"Kan pakket niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%hx:%hx:%hx:%"
|
"Kan pakket niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%hx:%hx:%hx:%"
|
||||||
"hx:%hx"
|
"hx:%hx"
|
||||||
|
|
||||||
#: src/route.c:392
|
#: src/route.c:389
|
||||||
msgid ""
|
msgid ""
|
||||||
"Cannot route packet: received unknown type neighbor solicitation request"
|
"Cannot route packet: received unknown type neighbor solicitation request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kan pakket niet routeren: ontvangst van onbekend type neighbor solicitation "
|
"Kan pakket niet routeren: ontvangst van onbekend type neighbor solicitation "
|
||||||
"verzoek"
|
"verzoek"
|
||||||
|
|
||||||
#: src/route.c:409
|
#: src/route.c:406
|
||||||
msgid "Cannot route packet: checksum error for neighbor solicitation request"
|
msgid "Cannot route packet: checksum error for neighbor solicitation request"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Kan pakket niet routeren: checksum fout voor neighbor solicitation verzoek"
|
"Kan pakket niet routeren: checksum fout voor neighbor solicitation verzoek"
|
||||||
|
|
||||||
#: src/route.c:418
|
#: src/route.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Cannot route packet: neighbor solicitation request for unknown address %hx:%"
|
"Cannot route packet: neighbor solicitation request for unknown address %hx:%"
|
||||||
|
@ -1137,16 +1186,16 @@ msgstr ""
|
||||||
"Kan pakket niet routeren: neighbor solicitation verzoek voor onbekend adres %"
|
"Kan pakket niet routeren: neighbor solicitation verzoek voor onbekend adres %"
|
||||||
"hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"
|
"hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"
|
||||||
|
|
||||||
#: src/route.c:497
|
#: src/route.c:494
|
||||||
msgid "Cannot route packet: received unknown type ARP request"
|
msgid "Cannot route packet: received unknown type ARP request"
|
||||||
msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek"
|
msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek"
|
||||||
|
|
||||||
#: src/route.c:506
|
#: src/route.c:503
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d"
|
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"
|
msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d"
|
||||||
|
|
||||||
#: src/route.c:561
|
#: src/route.c:558
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot route packet: unknown type %hx"
|
msgid "Cannot route packet: unknown type %hx"
|
||||||
msgstr "Kan pakket niet routeren: onbekend type %hx"
|
msgstr "Kan pakket niet routeren: onbekend type %hx"
|
||||||
|
@ -1222,50 +1271,50 @@ msgstr "%s is een %s"
|
||||||
|
|
||||||
#: src/linux/device.c:137 src/linux/device.c:148 src/linux/device.c:159
|
#: src/linux/device.c:137 src/linux/device.c:148 src/linux/device.c:159
|
||||||
#: src/freebsd/device.c:75 src/solaris/device.c:126 src/netbsd/device.c:78
|
#: src/freebsd/device.c:75 src/solaris/device.c:126 src/netbsd/device.c:78
|
||||||
#: src/darwin/device.c:75 src/cygwin/device.c:250 src/mingw/device.c:184
|
#: src/darwin/device.c:75 src/cygwin/device.c:254 src/mingw/device.c:118
|
||||||
#: src/raw_socket/device.c:114
|
#: src/mingw/device.c:309 src/raw_socket/device.c:114
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while reading from %s %s: %s"
|
msgid "Error while reading from %s %s: %s"
|
||||||
msgstr "Fout tijdens lezen van %s %s: %s"
|
msgstr "Fout tijdens lezen van %s %s: %s"
|
||||||
|
|
||||||
#: src/linux/device.c:170 src/freebsd/device.c:84 src/solaris/device.c:138
|
#: src/linux/device.c:170 src/freebsd/device.c:84 src/solaris/device.c:138
|
||||||
#: src/netbsd/device.c:90 src/darwin/device.c:87 src/cygwin/device.c:259
|
#: src/netbsd/device.c:90 src/darwin/device.c:87 src/cygwin/device.c:263
|
||||||
#: src/mingw/device.c:193 src/raw_socket/device.c:123
|
#: src/mingw/device.c:318 src/raw_socket/device.c:123
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Read packet of %d bytes from %s"
|
msgid "Read packet of %d bytes from %s"
|
||||||
msgstr "Pakket van %d bytes gelezen van %s"
|
msgstr "Pakket van %d bytes gelezen van %s"
|
||||||
|
|
||||||
#: src/linux/device.c:180 src/freebsd/device.c:94 src/solaris/device.c:148
|
#: src/linux/device.c:180 src/freebsd/device.c:94 src/solaris/device.c:148
|
||||||
#: src/netbsd/device.c:101 src/darwin/device.c:97 src/cygwin/device.c:271
|
#: src/netbsd/device.c:100 src/darwin/device.c:97 src/cygwin/device.c:275
|
||||||
#: src/mingw/device.c:205 src/raw_socket/device.c:134
|
#: src/mingw/device.c:331 src/raw_socket/device.c:133
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Writing packet of %d bytes to %s"
|
msgid "Writing packet of %d bytes to %s"
|
||||||
msgstr "Pakket van %d bytes geschreven naar %s"
|
msgstr "Pakket van %d bytes geschreven naar %s"
|
||||||
|
|
||||||
#: src/linux/device.c:187 src/linux/device.c:194 src/linux/device.c:203
|
#: src/linux/device.c:187 src/linux/device.c:194 src/linux/device.c:203
|
||||||
#: src/solaris/device.c:152 src/netbsd/device.c:105
|
#: src/solaris/device.c:152 src/netbsd/device.c:104
|
||||||
#: src/raw_socket/device.c:138
|
#: src/raw_socket/device.c:137
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't write to %s %s: %s"
|
msgid "Can't write to %s %s: %s"
|
||||||
msgstr "Kan niet schrijven naar %s %s: %s"
|
msgstr "Kan niet schrijven naar %s %s: %s"
|
||||||
|
|
||||||
#: src/linux/device.c:219 src/freebsd/device.c:112 src/solaris/device.c:166
|
#: src/linux/device.c:219 src/freebsd/device.c:112 src/solaris/device.c:166
|
||||||
#: src/netbsd/device.c:119 src/darwin/device.c:115 src/cygwin/device.c:288
|
#: src/netbsd/device.c:118 src/darwin/device.c:115 src/cygwin/device.c:292
|
||||||
#: src/mingw/device.c:222 src/raw_socket/device.c:152
|
#: src/mingw/device.c:348 src/raw_socket/device.c:151
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Statistics for %s %s:"
|
msgid "Statistics for %s %s:"
|
||||||
msgstr "Statistieken voor %s %s:"
|
msgstr "Statistieken voor %s %s:"
|
||||||
|
|
||||||
#: src/linux/device.c:220 src/freebsd/device.c:113 src/solaris/device.c:167
|
#: src/linux/device.c:220 src/freebsd/device.c:113 src/solaris/device.c:167
|
||||||
#: src/netbsd/device.c:120 src/darwin/device.c:116 src/cygwin/device.c:289
|
#: src/netbsd/device.c:119 src/darwin/device.c:116 src/cygwin/device.c:293
|
||||||
#: src/mingw/device.c:223 src/raw_socket/device.c:153
|
#: src/mingw/device.c:349 src/raw_socket/device.c:152
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " total bytes in: %10d"
|
msgid " total bytes in: %10d"
|
||||||
msgstr " totaal aantal bytes in: %10d"
|
msgstr " totaal aantal bytes in: %10d"
|
||||||
|
|
||||||
#: src/linux/device.c:221 src/freebsd/device.c:114 src/solaris/device.c:168
|
#: src/linux/device.c:221 src/freebsd/device.c:114 src/solaris/device.c:168
|
||||||
#: src/netbsd/device.c:121 src/darwin/device.c:117 src/cygwin/device.c:290
|
#: src/netbsd/device.c:120 src/darwin/device.c:117 src/cygwin/device.c:294
|
||||||
#: src/mingw/device.c:224 src/raw_socket/device.c:154
|
#: src/mingw/device.c:350 src/raw_socket/device.c:153
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " total bytes out: %10d"
|
msgid " total bytes out: %10d"
|
||||||
msgstr " totaal aantal bytes uit: %10d"
|
msgstr " totaal aantal bytes uit: %10d"
|
||||||
|
@ -1321,50 +1370,54 @@ msgstr "NetBSD tun apparaat"
|
||||||
msgid "MacOS/X tun device"
|
msgid "MacOS/X tun device"
|
||||||
msgstr "MaxOS/X tun apparaat"
|
msgstr "MaxOS/X tun apparaat"
|
||||||
|
|
||||||
#: src/cygwin/device.c:89 src/cygwin/device.c:111 src/mingw/device.c:84
|
#: src/cygwin/device.c:89 src/mingw/device.c:161
|
||||||
#: src/mingw/device.c:106
|
|
||||||
msgid "Unable to read registry"
|
msgid "Unable to read registry"
|
||||||
msgstr "Kon registry niet lezen"
|
msgstr "Kon registry niet lezen"
|
||||||
|
|
||||||
#: src/cygwin/device.c:136 src/mingw/device.c:130
|
#: src/cygwin/device.c:138 src/mingw/device.c:209
|
||||||
msgid "No Windows tap device found!"
|
msgid "No Windows tap device found!"
|
||||||
msgstr "Geen Windows tap apparaat gevonden!"
|
msgstr "Geen Windows tap apparaat gevonden!"
|
||||||
|
|
||||||
#: src/cygwin/device.c:159
|
#: src/cygwin/device.c:164
|
||||||
msgid "Could not open Windows tap device for writing!"
|
msgid "Could not open Windows tap device for writing!"
|
||||||
msgstr "Kon Windows tap apparaat niet openen om te schrijven!"
|
msgstr "Kon Windows tap apparaat niet openen om te schrijven!"
|
||||||
|
|
||||||
#: src/cygwin/device.c:168 src/mingw/device.c:152
|
#: src/cygwin/device.c:173 src/mingw/device.c:234
|
||||||
msgid "Could not get MAC address from Windows tap device!"
|
msgid "Could not get MAC address from Windows tap device!"
|
||||||
msgstr "Kon MAC adres niet achterhalen van Windows tap apparaat!"
|
msgstr "Kon MAC adres niet achterhalen van Windows tap apparaat!"
|
||||||
|
|
||||||
#: src/cygwin/device.c:195
|
#: src/cygwin/device.c:202
|
||||||
msgid "Could not open Windows tap device for reading!"
|
msgid "Could not open Windows tap device for reading!"
|
||||||
msgstr "Kon Windows tap apparaat niet openen om te lezen!"
|
msgstr "Kon Windows tap apparaat niet openen om te lezen!"
|
||||||
|
|
||||||
#: src/cygwin/device.c:201
|
#: src/cygwin/device.c:208
|
||||||
msgid "Tap reader forked and running."
|
msgid "Tap reader forked and running."
|
||||||
msgstr "Taplezer is geforked en draait."
|
msgstr "Taplezer is geforked en draait."
|
||||||
|
|
||||||
#: src/cygwin/device.c:218
|
#: src/cygwin/device.c:225
|
||||||
msgid "Tap reader failed!"
|
msgid "Tap reader failed!"
|
||||||
msgstr "Taplezer faalde!"
|
msgstr "Taplezer faalde!"
|
||||||
|
|
||||||
#: src/cygwin/device.c:225 src/mingw/device.c:163
|
#: src/cygwin/device.c:229 src/mingw/device.c:288
|
||||||
msgid "Windows tap device"
|
msgid "Windows tap device"
|
||||||
msgstr "Windows tap apparaat"
|
msgstr "Windows tap apparaat"
|
||||||
|
|
||||||
#: src/cygwin/device.c:227 src/mingw/device.c:165
|
#: src/cygwin/device.c:231 src/mingw/device.c:290
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (%s) is a %s"
|
msgid "%s (%s) is a %s"
|
||||||
msgstr "%s (%s) is een %s"
|
msgstr "%s (%s) is een %s"
|
||||||
|
|
||||||
#: src/cygwin/device.c:275 src/mingw/device.c:209
|
#: src/cygwin/device.c:279 src/mingw/device.c:335
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Error while writing to %s %s"
|
msgid "Error while writing to %s %s"
|
||||||
msgstr "Fout tijdens schrijven naar %s %s"
|
msgstr "Fout tijdens schrijven naar %s %s"
|
||||||
|
|
||||||
#: src/mingw/device.c:145
|
#: src/mingw/device.c:99
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Tap reader running"
|
||||||
|
msgstr "Taplezer is geforked en draait."
|
||||||
|
|
||||||
|
#: src/mingw/device.c:227
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (%s) is no a usable Windows tap device!"
|
msgid "%s (%s) is no a usable Windows tap device!"
|
||||||
msgstr "%s (%s) is geen bruikbaar Windows tap apparaat!"
|
msgstr "%s (%s) is geen bruikbaar Windows tap apparaat!"
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: logger.c,v 1.1.2.8 2003/07/29 22:59:00 guus Exp $
|
$Id: logger.c,v 1.1.2.9 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
@ -71,6 +71,7 @@ void logger(int priority, const char *format, ...) {
|
||||||
fprintf(logfile, "%ld %s[%d]: ", time(NULL), logident, logpid);
|
fprintf(logfile, "%ld %s[%d]: ", time(NULL), logident, logpid);
|
||||||
vfprintf(logfile, format, ap);
|
vfprintf(logfile, format, ap);
|
||||||
fprintf(logfile, "\n");
|
fprintf(logfile, "\n");
|
||||||
|
fflush(logfile);
|
||||||
break;
|
break;
|
||||||
case LOGMODE_SYSLOG:
|
case LOGMODE_SYSLOG:
|
||||||
#ifdef HAVE_SYSLOG_H
|
#ifdef HAVE_SYSLOG_H
|
||||||
|
|
17
src/net.c
17
src/net.c
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: net.c,v 1.35.4.195 2003/07/29 22:59:00 guus Exp $
|
$Id: net.c,v 1.35.4.196 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
@ -42,6 +42,7 @@
|
||||||
#include "xalloc.h"
|
#include "xalloc.h"
|
||||||
|
|
||||||
bool do_purge = false;
|
bool do_purge = false;
|
||||||
|
volatile bool running;
|
||||||
|
|
||||||
time_t now = 0;
|
time_t now = 0;
|
||||||
|
|
||||||
|
@ -280,7 +281,7 @@ static void check_network_activity(fd_set * f)
|
||||||
/*
|
/*
|
||||||
this is where it all happens...
|
this is where it all happens...
|
||||||
*/
|
*/
|
||||||
void main_loop(void)
|
int main_loop(void)
|
||||||
{
|
{
|
||||||
fd_set fset;
|
fd_set fset;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
@ -294,7 +295,9 @@ void main_loop(void)
|
||||||
last_config_check = now;
|
last_config_check = now;
|
||||||
srand(now);
|
srand(now);
|
||||||
|
|
||||||
for(;;) {
|
running = true;
|
||||||
|
|
||||||
|
while(running) {
|
||||||
now = time(NULL);
|
now = time(NULL);
|
||||||
|
|
||||||
tv.tv_sec = 1 + (rand() & 7); /* Approx. 5 seconds, randomized to prevent global synchronisation effects */
|
tv.tv_sec = 1 + (rand() & 7); /* Approx. 5 seconds, randomized to prevent global synchronisation effects */
|
||||||
|
@ -310,7 +313,7 @@ void main_loop(void)
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
cp_trace();
|
cp_trace();
|
||||||
dump_connections();
|
dump_connections();
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
@ -379,7 +382,7 @@ void main_loop(void)
|
||||||
|
|
||||||
if(!read_server_config()) {
|
if(!read_server_config()) {
|
||||||
logger(LOG_ERR, _("Unable to reread configuration file, exitting."));
|
logger(LOG_ERR, _("Unable to reread configuration file, exitting."));
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close connections to hosts that have a changed or deleted host config file */
|
/* Close connections to hosts that have a changed or deleted host config file */
|
||||||
|
@ -405,8 +408,8 @@ void main_loop(void)
|
||||||
/* Try to make outgoing connections */
|
/* Try to make outgoing connections */
|
||||||
|
|
||||||
try_outgoing_connections();
|
try_outgoing_connections();
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: net.h,v 1.9.4.68 2003/07/29 22:59:00 guus Exp $
|
$Id: net.h,v 1.9.4.69 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TINC_NET_H__
|
#ifndef __TINC_NET_H__
|
||||||
|
@ -135,7 +135,7 @@ extern bool setup_network_connections(void);
|
||||||
extern void setup_outgoing_connection(struct outgoing_t *);
|
extern void setup_outgoing_connection(struct outgoing_t *);
|
||||||
extern void try_outgoing_connections(void);
|
extern void try_outgoing_connections(void);
|
||||||
extern void close_network_connections(void);
|
extern void close_network_connections(void);
|
||||||
extern void main_loop(void);
|
extern int main_loop(void);
|
||||||
extern void terminate_connection(struct connection_t *, bool);
|
extern void terminate_connection(struct connection_t *, bool);
|
||||||
extern void flush_queue(struct node_t *);
|
extern void flush_queue(struct node_t *);
|
||||||
extern bool read_rsa_public_key(struct connection_t *);
|
extern bool read_rsa_public_key(struct connection_t *);
|
||||||
|
|
175
src/process.c
175
src/process.c
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: process.c,v 1.1.2.60 2003/07/31 14:24:19 guus Exp $
|
$Id: process.c,v 1.1.2.61 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
@ -43,6 +43,7 @@ extern char *identname;
|
||||||
extern char *pidfilename;
|
extern char *pidfilename;
|
||||||
extern char **g_argv;
|
extern char **g_argv;
|
||||||
extern bool use_logfile;
|
extern bool use_logfile;
|
||||||
|
extern volatile bool running;
|
||||||
|
|
||||||
sigset_t emptysigset;
|
sigset_t emptysigset;
|
||||||
|
|
||||||
|
@ -70,24 +71,154 @@ static int fcloseall(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
#ifdef HAVE_MINGW
|
||||||
Close network connections, and terminate neatly
|
extern char *identname;
|
||||||
*/
|
extern char *program_name;
|
||||||
void cleanup_and_exit(int c)
|
extern char **g_argv;
|
||||||
{
|
|
||||||
cp();
|
|
||||||
|
|
||||||
close_network_connections();
|
static SC_HANDLE manager = NULL;
|
||||||
|
static SC_HANDLE service = NULL;
|
||||||
|
static SERVICE_STATUS status = {0};
|
||||||
|
static SERVICE_STATUS_HANDLE statushandle = 0;
|
||||||
|
|
||||||
ifdebug(CONNECTIONS)
|
bool install_service(void) {
|
||||||
dump_device_stats();
|
char command[4096] = "";
|
||||||
|
char **argp;
|
||||||
|
|
||||||
logger(LOG_NOTICE, _("Terminating"));
|
manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||||
|
if(!manager) {
|
||||||
|
logger(LOG_ERR, _("Could not open service manager: %s"), winerror(GetLastError()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
closelogger();
|
if(!strchr(program_name, '\\')) {
|
||||||
exit(c);
|
GetCurrentDirectory(sizeof(command), command);
|
||||||
|
strncat(command, "\\", sizeof(command));
|
||||||
|
}
|
||||||
|
|
||||||
|
strncat(command, program_name, sizeof(command));
|
||||||
|
for(argp = g_argv + 1; *argp; argp++) {
|
||||||
|
strncat(command, " ", sizeof(command));
|
||||||
|
strncat(command, *argp, sizeof(command));
|
||||||
|
}
|
||||||
|
|
||||||
|
service = CreateService(manager, identname, identname,
|
||||||
|
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
|
||||||
|
command, "NDIS", NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
if(!service) {
|
||||||
|
logger(LOG_ERR, _("Could not create %s service: %s"), identname, winerror(GetLastError()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger(LOG_INFO, _("%s service installed"), identname);
|
||||||
|
|
||||||
|
if(!StartService(service, 0, NULL))
|
||||||
|
logger(LOG_WARNING, _("Could not start %s service: %s"), identname, winerror(GetLastError()));
|
||||||
|
else
|
||||||
|
logger(LOG_INFO, _("%s service started"), identname);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
service = OpenService(manager, identname, SERVICE_ALL_ACCESS);
|
||||||
|
|
||||||
|
if(!service) {
|
||||||
|
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()));
|
||||||
|
else
|
||||||
|
logger(LOG_INFO, _("%s service stopped"), identname);
|
||||||
|
|
||||||
|
if(!DeleteService(service)) {
|
||||||
|
logger(LOG_ERR, _("Could not remove %s service: %s"), identname, winerror(GetLastError()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger(LOG_INFO, _("%s service removed"), identname);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) {
|
||||||
|
switch(request) {
|
||||||
|
case SERVICE_CONTROL_STOP:
|
||||||
|
logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_STOP");
|
||||||
|
running = false;
|
||||||
|
break;
|
||||||
|
case SERVICE_CONTROL_SHUTDOWN:
|
||||||
|
logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_SHUTDOWN");
|
||||||
|
running = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logger(LOG_WARNING, _("Got unexpected request %d"), request);
|
||||||
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID WINAPI run_service(DWORD argc, LPTSTR* argv)
|
||||||
|
{
|
||||||
|
int err = 1;
|
||||||
|
extern int main2(int argc, char **argv);
|
||||||
|
|
||||||
|
|
||||||
|
status.dwServiceType = SERVICE_WIN32;
|
||||||
|
status.dwCurrentState = SERVICE_RUNNING;
|
||||||
|
status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
|
||||||
|
status.dwWin32ExitCode = 0;
|
||||||
|
status.dwServiceSpecificExitCode = 0;
|
||||||
|
status.dwCheckPoint = 0;
|
||||||
|
status.dwWaitHint = 0;
|
||||||
|
|
||||||
|
statushandle = RegisterServiceCtrlHandlerEx(identname, controlhandler, NULL);
|
||||||
|
|
||||||
|
if (!statushandle) {
|
||||||
|
logger(LOG_ERR, _("System call `%s' failed: %s"), "RegisterServiceCtrlHandlerEx", winerror(GetLastError()));
|
||||||
|
err = 1;
|
||||||
|
} else {
|
||||||
|
SetServiceStatus(statushandle, &status);
|
||||||
|
|
||||||
|
err = main2(argc, argv);
|
||||||
|
|
||||||
|
status.dwCurrentState = SERVICE_STOPPED;
|
||||||
|
status.dwWin32ExitCode = err;
|
||||||
|
|
||||||
|
SetServiceStatus(statushandle, &status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool init_service(void) {
|
||||||
|
SERVICE_TABLE_ENTRY services[] = {
|
||||||
|
{identname, run_service},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!StartServiceCtrlDispatcher(services)) {
|
||||||
|
if(GetLastError() == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
logger(LOG_ERR, _("System call `%s' failed: %s"), "StartServiceCtrlDispatcher", winerror(GetLastError()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_MINGW
|
#ifndef HAVE_MINGW
|
||||||
/*
|
/*
|
||||||
check for an existing tinc for this net, and write pid to pidfile
|
check for an existing tinc for this net, and write pid to pidfile
|
||||||
|
@ -151,9 +282,11 @@ bool kill_other(int signal)
|
||||||
fprintf(stderr, _("Removing stale lock file.\n"));
|
fprintf(stderr, _("Removing stale lock file.\n"));
|
||||||
remove_pid(pidfilename);
|
remove_pid(pidfilename);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
#else
|
||||||
|
return remove_service();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -170,14 +303,14 @@ bool detach(void)
|
||||||
#ifndef HAVE_MINGW
|
#ifndef HAVE_MINGW
|
||||||
if(!write_pidfile())
|
if(!write_pidfile())
|
||||||
return false;
|
return false;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If we succeeded in doing that, detach */
|
/* If we succeeded in doing that, detach */
|
||||||
|
|
||||||
closelogger();
|
closelogger();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_FORK
|
|
||||||
if(do_detach) {
|
if(do_detach) {
|
||||||
|
#ifndef HAVE_MINGW
|
||||||
if(daemon(0, 0)) {
|
if(daemon(0, 0)) {
|
||||||
fprintf(stderr, _("Couldn't detach from terminal: %s"),
|
fprintf(stderr, _("Couldn't detach from terminal: %s"),
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
|
@ -188,8 +321,11 @@ bool detach(void)
|
||||||
|
|
||||||
if(!write_pid(pidfilename))
|
if(!write_pid(pidfilename))
|
||||||
return false;
|
return false;
|
||||||
}
|
#else
|
||||||
|
if(!statushandle)
|
||||||
|
exit(install_service());
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
openlogger(identname, use_logfile?LOGMODE_FILE:(do_detach?LOGMODE_SYSLOG:LOGMODE_STDERR));
|
openlogger(identname, use_logfile?LOGMODE_FILE:(do_detach?LOGMODE_SYSLOG:LOGMODE_STDERR));
|
||||||
|
|
||||||
|
@ -312,14 +448,13 @@ bool execute_script(const char *name, char **envp)
|
||||||
static RETSIGTYPE sigterm_handler(int a)
|
static RETSIGTYPE sigterm_handler(int a)
|
||||||
{
|
{
|
||||||
logger(LOG_NOTICE, _("Got TERM signal"));
|
logger(LOG_NOTICE, _("Got TERM signal"));
|
||||||
|
running = false;
|
||||||
cleanup_and_exit(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static RETSIGTYPE sigquit_handler(int a)
|
static RETSIGTYPE sigquit_handler(int a)
|
||||||
{
|
{
|
||||||
logger(LOG_NOTICE, _("Got QUIT signal"));
|
logger(LOG_NOTICE, _("Got QUIT signal"));
|
||||||
cleanup_and_exit(0);
|
running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static RETSIGTYPE fatal_signal_square(int a)
|
static RETSIGTYPE fatal_signal_square(int a)
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: process.h,v 1.1.2.18 2003/07/30 21:52:41 guus Exp $
|
$Id: process.h,v 1.1.2.19 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TINC_PROCESS_H__
|
#ifndef __TINC_PROCESS_H__
|
||||||
|
@ -31,6 +31,5 @@ extern void setup_signals(void);
|
||||||
extern bool execute_script(const char *, char **);
|
extern bool execute_script(const char *, char **);
|
||||||
extern bool detach(void);
|
extern bool detach(void);
|
||||||
extern bool kill_other(int);
|
extern bool kill_other(int);
|
||||||
extern void cleanup_and_exit(int) __attribute__ ((__noreturn__));
|
|
||||||
|
|
||||||
#endif /* __TINC_PROCESS_H__ */
|
#endif /* __TINC_PROCESS_H__ */
|
||||||
|
|
66
src/tincd.c
66
src/tincd.c
|
@ -17,7 +17,7 @@
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
$Id: tincd.c,v 1.10.4.79 2003/07/30 11:50:45 guus Exp $
|
$Id: tincd.c,v 1.10.4.80 2003/08/02 20:50:38 guus Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
@ -77,7 +77,8 @@ char *identname = NULL; /* program name for syslog */
|
||||||
char *pidfilename = NULL; /* pid file location */
|
char *pidfilename = NULL; /* pid file location */
|
||||||
char *logfilename = NULL; /* log file location */
|
char *logfilename = NULL; /* log file location */
|
||||||
char **g_argv; /* a copy of the cmdline arguments */
|
char **g_argv; /* a copy of the cmdline arguments */
|
||||||
char **environment; /* A pointer to the environment on startup */
|
|
||||||
|
int exitstatus = 0;
|
||||||
|
|
||||||
static struct option const long_options[] = {
|
static struct option const long_options[] = {
|
||||||
{"config", required_argument, NULL, 'c'},
|
{"config", required_argument, NULL, 'c'},
|
||||||
|
@ -119,11 +120,9 @@ static void usage(bool status)
|
||||||
" --version Output version information and exit.\n\n"));
|
" --version Output version information and exit.\n\n"));
|
||||||
printf(_("Report bugs to tinc@nl.linux.org.\n"));
|
printf(_("Report bugs to tinc@nl.linux.org.\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
exit(status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_options(int argc, char **argv, char **envp)
|
static bool parse_options(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
|
@ -178,10 +177,13 @@ static void parse_options(int argc, char **argv, char **envp)
|
||||||
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);
|
optarg);
|
||||||
usage(true);
|
usage(true);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
kill_tincd = SIGTERM;
|
kill_tincd = SIGTERM;
|
||||||
|
#else
|
||||||
|
kill_tincd = 1;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -197,6 +199,7 @@ static void parse_options(int argc, char **argv, char **envp)
|
||||||
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);
|
optarg);
|
||||||
usage(true);
|
usage(true);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
generate_keys &= ~7; /* Round it to bytes */
|
generate_keys &= ~7; /* Round it to bytes */
|
||||||
|
@ -228,11 +231,14 @@ static void parse_options(int argc, char **argv, char **envp)
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
usage(true);
|
usage(true);
|
||||||
|
return false;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function prettyprints the key generation process */
|
/* This function prettyprints the key generation process */
|
||||||
|
@ -354,7 +360,7 @@ static void make_names(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv, char **envp)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
program_name = argv[0];
|
program_name = argv[0];
|
||||||
|
|
||||||
|
@ -362,8 +368,9 @@ int main(int argc, char **argv, char **envp)
|
||||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||||
textdomain(PACKAGE);
|
textdomain(PACKAGE);
|
||||||
|
|
||||||
environment = envp;
|
if(!parse_options(argc, argv))
|
||||||
parse_options(argc, argv, envp);
|
return 1;
|
||||||
|
|
||||||
make_names();
|
make_names();
|
||||||
|
|
||||||
if(show_version) {
|
if(show_version) {
|
||||||
|
@ -378,11 +385,13 @@ int main(int argc, char **argv, char **envp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(show_help)
|
if(show_help) {
|
||||||
usage(false);
|
usage(false);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(kill_tincd)
|
if(kill_tincd)
|
||||||
exit(!kill_other(kill_tincd));
|
return !kill_other(kill_tincd);
|
||||||
|
|
||||||
openlogger("tinc", LOGMODE_STDERR);
|
openlogger("tinc", LOGMODE_STDERR);
|
||||||
|
|
||||||
|
@ -412,31 +421,48 @@ int main(int argc, char **argv, char **envp)
|
||||||
|
|
||||||
if(generate_keys) {
|
if(generate_keys) {
|
||||||
read_server_config();
|
read_server_config();
|
||||||
exit(!keygen(generate_keys));
|
return !keygen(generate_keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!read_server_config())
|
if(!read_server_config())
|
||||||
exit(1);
|
return 1;
|
||||||
|
|
||||||
if(lzo_init() != LZO_E_OK) {
|
if(lzo_init() != LZO_E_OK) {
|
||||||
logger(LOG_ERR, _("Error initializing LZO compressor!"));
|
logger(LOG_ERR, _("Error initializing LZO compressor!"));
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MINGW
|
#ifdef HAVE_MINGW
|
||||||
if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) {
|
if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) {
|
||||||
logger(LOG_ERR, _("System call `%s' failed: %s"), "WSAStartup", strerror(errno));
|
logger(LOG_ERR, _("System call `%s' failed: %s"), "WSAStartup", winerror(GetLastError()));
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!do_detach || !init_service())
|
||||||
|
return main2(argc, argv);
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main2(int argc, char **argv)
|
||||||
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(!detach())
|
if(!detach())
|
||||||
exit(1);
|
return 1;
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
if(setup_network_connections()) {
|
if(setup_network_connections()) {
|
||||||
main_loop();
|
int status;
|
||||||
cleanup_and_exit(1);
|
status = main_loop();
|
||||||
|
|
||||||
|
close_network_connections();
|
||||||
|
|
||||||
|
ifdebug(CONNECTIONS)
|
||||||
|
dump_device_stats();
|
||||||
|
|
||||||
|
logger(LOG_NOTICE, _("Terminating"));
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger(LOG_ERR, _("Unrecoverable error"));
|
logger(LOG_ERR, _("Unrecoverable error"));
|
||||||
|
@ -447,7 +473,7 @@ int main(int argc, char **argv, char **envp)
|
||||||
sleep(maxtimeout);
|
sleep(maxtimeout);
|
||||||
} else {
|
} else {
|
||||||
logger(LOG_ERR, _("Not restarting."));
|
logger(LOG_ERR, _("Not restarting."));
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue