udpsvd: more work on it. works in limited testing.
diff --git a/include/libbb.h b/include/libbb.h
index b802e01..e5413b1 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -321,6 +321,17 @@
#endif
};
} len_and_sockaddr;
+enum {
+ LSA_SIZEOF_SA = sizeof(
+ union {
+ struct sockaddr sa;
+ struct sockaddr_in sin;
+#if ENABLE_FEATURE_IPV6
+ struct sockaddr_in6 sin6;
+#endif
+ }
+ )
+};
/* Create stream socket, and allocated suitable lsa
* (lsa of correct size and lsa->sa.sa_family (AF_INET/AF_INET6)) */
int xsocket_stream(len_and_sockaddr **lsap);
diff --git a/include/usage.h b/include/usage.h
index cec2dd7..bab14f5 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -3326,32 +3326,41 @@
"1\n"
#define tcpsvd_trivial_usage \
- "[-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] ip port prog..."
+ "[-hEv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] ip port prog..."
/* with not-implemented options: */
/* "[-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] [-i dir|-x cdb] [ -t sec] ip port prog..." */
#define tcpsvd_full_usage \
- "tcpsvd creates TCP/IP socket, binds it to host:port\n" \
- "and listens on in for incoming connections. For each connection\n" \
- "it runs prog" \
+ "Creates TCP socket, binds it to host:port and listens on in\n" \
+ "for incoming connections. For each connection it runs prog" \
"\n" \
- "\nip IP to listen on. '0' = 'all'" \
+ "\nip IP to listen on. '0' = all" \
"\nport Port to listen on" \
- "\nprog [arg] Program to run for each connection" \
+ "\nprog [arg] Program to run" \
"\n-l name Local hostname (else looks up local hostname in DNS)" \
"\n-u user[:group] Change to user/group after bind" \
"\n-c n Handle up to n connections simultaneously" \
"\n-C n[:msg] Allow only up to n connections from the same IP" \
"\n New connections from this IP address are closed" \
"\n immediately. 'msg' is written to the peer before close" \
- "\n-h Look up peer's hostname in DNS" \
+ "\n-h Look up peer's hostname" \
"\n-b n Allow a backlog of approximately n TCP SYNs" \
"\n-E Do not set up TCP-related environment variables" \
"\n-v Verbose"
#define udpsvd_trivial_usage \
- "TODO"
+ "[-hv] [-u user] [-l name] host port prog"
#define udpsvd_full_usage \
- "TODO"
+ "Creates UDP socket, binds it to host:port and listens on in\n" \
+ "for incoming packets. When packet arrives it runs prog.\n" \
+ "When prog exits, it start to listen on the socket again" \
+ "\n" \
+ "\nip IP to listen on. '0' = all" \
+ "\nport Port to listen on" \
+ "\nprog [arg] Program to run" \
+ "\n-l name Local hostname (else looks up local hostname in DNS)" \
+ "\n-u user[:group] Change to user/group after bind" \
+ "\n-h Look up peer's hostname" \
+ "\n-v Verbose"
#define tftp_trivial_usage \
"[OPTION]... HOST [PORT]"