From b984dd7b53048de4c831709e6d941d997e4f2ef9 Mon Sep 17 00:00:00 2001 From: cronyx Date: Sun, 5 Feb 2023 11:03:51 +0300 Subject: [PATCH] xmdp add scan time key (#636) Thank you ! --- general/package/xmdp/src/Makefile | 2 +- general/package/xmdp/src/xmdp.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/general/package/xmdp/src/Makefile b/general/package/xmdp/src/Makefile index cb8c1804..0b7a79fc 100644 --- a/general/package/xmdp/src/Makefile +++ b/general/package/xmdp/src/Makefile @@ -1,4 +1,4 @@ -CFLAGS=-Wall -Wpedantic +CFLAGS=-Os -Wall -Wpedantic LDFLAGS=-lm all: xmdp diff --git a/general/package/xmdp/src/xmdp.c b/general/package/xmdp/src/xmdp.c index 3cc8f545..d2a1f18a 100644 --- a/general/package/xmdp/src/xmdp.c +++ b/general/package/xmdp/src/xmdp.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include @@ -21,6 +22,8 @@ #define MIN(x, y) ((x) < (y) ? (x) : (y)) +static int scansec = 0; + const char brpkt[] = "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x05" "\x00\x00\x00\x00"; @@ -91,7 +94,10 @@ void sigalarm(int sig) { } } -int main() { +int scan() { + time_t start, current; + start = time(NULL); + bsock = socket(AF_INET, SOCK_DGRAM, 0); if (bsock == -1) { perror("socket"); @@ -128,6 +134,12 @@ int main() { uint32_t *seen_vec = malloc(seen_cap * sizeof(*seen_vec)); while (1) { + current = time(NULL); + + if ((scansec > 0) && (current-start > scansec)) { + exit(EXIT_SUCCESS); + } + char buf[1024]; struct sockaddr_in their_addr; socklen_t addr_len = sizeof their_addr; @@ -226,3 +238,18 @@ int main() { free(seen_vec); } + +int main(int argc, char *argv[]) { + int opt; + while ((opt = getopt(argc, argv, "t:")) != -1) { + switch (opt) { + case 't': + scansec = atoi(optarg); + break; + default: + printf("Usage: %s [-t seconds]\n", argv[0]); + exit(EXIT_FAILURE); + } + } + return scan(); +}