mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-11-01 10:57:47 +00:00
* enhance maverick stability * add persistent certificate storage * update schema * add channel stats to telemetry messages * make rtty cmd handler work * add support for recovery images Signed-off-by: John Crispin <john@phrozen.org>
119 lines
3.2 KiB
Diff
119 lines
3.2 KiB
Diff
Index: rtty-7.1.4/src/main.c
|
|
===================================================================
|
|
--- rtty-7.1.4.orig/src/main.c
|
|
+++ rtty-7.1.4/src/main.c
|
|
@@ -37,6 +37,9 @@ enum {
|
|
LONG_OPT_HELP = 1
|
|
};
|
|
|
|
+int force_exit = 0;
|
|
+int connected = 0;
|
|
+
|
|
static void signal_cb(struct ev_loop *loop, ev_signal *w, int revents)
|
|
{
|
|
if (w->signum == SIGINT) {
|
|
@@ -53,6 +56,7 @@ static struct option long_options[] = {
|
|
{"token", required_argument, NULL, 't'},
|
|
{"verbose", no_argument, NULL, 'v'},
|
|
{"version", no_argument, NULL, 'V'},
|
|
+ {"exit", required_argument, NULL, 'e'},
|
|
{"help", no_argument, NULL, LONG_OPT_HELP},
|
|
{0, 0, 0, 0}
|
|
};
|
|
@@ -79,10 +83,17 @@ static void usage(const char *prog)
|
|
exit(1);
|
|
}
|
|
|
|
+static void timeout_cb(EV_P_ ev_timer *w, int revents)
|
|
+{
|
|
+ if (!connected)
|
|
+ exit(1);
|
|
+}
|
|
+
|
|
int main(int argc, char **argv)
|
|
{
|
|
struct ev_loop *loop = EV_DEFAULT;
|
|
struct ev_signal signal_watcher;
|
|
+ struct ev_timer timeout_watcher;
|
|
bool background = false;
|
|
bool verbose = false;
|
|
struct rtty rtty = {
|
|
@@ -95,7 +106,7 @@ int main(int argc, char **argv)
|
|
int c;
|
|
|
|
while (true) {
|
|
- c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vV", long_options, &option_index);
|
|
+ c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vVe:", long_options, &option_index);
|
|
if (c == -1)
|
|
break;
|
|
|
|
@@ -146,6 +157,9 @@ int main(int argc, char **argv)
|
|
case LONG_OPT_HELP:
|
|
usage(argv[0]);
|
|
break;
|
|
+ case 'e':
|
|
+ force_exit = atoi(optarg);
|
|
+ break;
|
|
default: /* '?' */
|
|
usage(argv[0]);
|
|
break;
|
|
@@ -167,6 +181,10 @@ int main(int argc, char **argv)
|
|
|
|
ev_signal_init(&signal_watcher, signal_cb, SIGINT);
|
|
ev_signal_start(loop, &signal_watcher);
|
|
+ if (force_exit) {
|
|
+ ev_timer_init(&timeout_watcher, timeout_cb, force_exit, 0.);
|
|
+ ev_timer_start(loop, &timeout_watcher);
|
|
+ }
|
|
|
|
if (rtty_start(&rtty) < 0)
|
|
return -1;
|
|
Index: rtty-7.1.4/src/rtty.c
|
|
===================================================================
|
|
--- rtty-7.1.4.orig/src/rtty.c
|
|
+++ rtty-7.1.4/src/rtty.c
|
|
@@ -36,6 +36,9 @@
|
|
#include "utils.h"
|
|
#include "command.h"
|
|
|
|
+extern int force_exit;
|
|
+extern int connected;
|
|
+
|
|
static char login_path[128]; /* /bin/login */
|
|
|
|
static void del_tty(struct tty *tty)
|
|
@@ -57,6 +60,8 @@ static void del_tty(struct tty *tty)
|
|
log_info("delete tty: %d\n", tty->sid);
|
|
|
|
free(tty);
|
|
+ if (force_exit)
|
|
+ exit(0);
|
|
}
|
|
|
|
static inline struct tty *find_tty(struct rtty *rtty, int sid)
|
|
@@ -69,6 +74,7 @@ static inline struct tty *find_tty(struc
|
|
static inline void tty_logout(struct rtty *rtty, int sid)
|
|
{
|
|
struct tty *tty = find_tty(rtty, sid);
|
|
+
|
|
if (tty)
|
|
del_tty(tty);
|
|
}
|
|
@@ -136,6 +142,8 @@ static void pty_on_exit(struct ev_loop *
|
|
ev_io_start(loop, &rtty->iow);
|
|
|
|
del_tty(tty);
|
|
+ if (force_exit)
|
|
+ exit(0);
|
|
}
|
|
|
|
static void tty_login(struct rtty *rtty)
|
|
@@ -188,6 +196,7 @@ static void tty_login(struct rtty *rtty)
|
|
buffer_put_u8(&rtty->wb, sid);
|
|
ev_io_start(rtty->loop, &rtty->iow);
|
|
|
|
+ connected = 1;
|
|
log_info("new tty: %d\n", sid);
|
|
}
|
|
|