udpsvd: next part of ipsvd applets (not working yet)
This commit is contained in:
parent
57a426b15b
commit
60fadaca28
@ -311,6 +311,7 @@ USE_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
|||||||
//USE_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
//USE_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||||
USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
USE_APP_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||||
USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
USE_APP_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
||||||
|
USE_UDPSVD(APPLET(udpsvd, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||||
USE_UMOUNT(APPLET(umount, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_UMOUNT(APPLET(umount, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
USE_UNAME(APPLET(uname, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_UNAME(APPLET(uname, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
USE_UNCOMPRESS(APPLET(uncompress, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_UNCOMPRESS(APPLET(uncompress, _BB_DIR_BIN, _BB_SUID_NEVER))
|
||||||
|
@ -3348,6 +3348,11 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when
|
|||||||
"\n-E Do not set up TCP-related environment variables" \
|
"\n-E Do not set up TCP-related environment variables" \
|
||||||
"\n-v Verbose"
|
"\n-v Verbose"
|
||||||
|
|
||||||
|
#define udpsvd_trivial_usage \
|
||||||
|
"TODO"
|
||||||
|
#define udpsvd_full_usage \
|
||||||
|
"TODO"
|
||||||
|
|
||||||
#define tftp_trivial_usage \
|
#define tftp_trivial_usage \
|
||||||
"[OPTION]... HOST [PORT]"
|
"[OPTION]... HOST [PORT]"
|
||||||
#define tftp_full_usage \
|
#define tftp_full_usage \
|
||||||
|
@ -9,6 +9,12 @@ config TCPSVD
|
|||||||
bool "tcpsvd"
|
bool "tcpsvd"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
tcpsvd listens on a port and runs a program for each new connection
|
tcpsvd listens on a tcp port and runs a program for each new connection
|
||||||
|
|
||||||
|
config UDPSVD
|
||||||
|
bool "udpsvd"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
udpsvd listens on a udp port and runs a program for each new connection
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -6,3 +6,4 @@
|
|||||||
|
|
||||||
lib-y:=
|
lib-y:=
|
||||||
lib-$(CONFIG_TCPSVD) += tcpsvd.o ipsvd_perhost.o
|
lib-$(CONFIG_TCPSVD) += tcpsvd.o ipsvd_perhost.o
|
||||||
|
lib-$(CONFIG_UDPSVD) += udpsvd.o
|
||||||
|
@ -126,7 +126,6 @@ int tcpsvd_main(int argc, char **argv)
|
|||||||
socklen_t sockadr_size;
|
socklen_t sockadr_size;
|
||||||
uint16_t local_port = local_port;
|
uint16_t local_port = local_port;
|
||||||
uint16_t remote_port;
|
uint16_t remote_port;
|
||||||
unsigned port;
|
|
||||||
char *local_hostname = NULL;
|
char *local_hostname = NULL;
|
||||||
char *remote_hostname = (char*)""; /* "" used if no -h */
|
char *remote_hostname = (char*)""; /* "" used if no -h */
|
||||||
char *local_ip = local_ip;
|
char *local_ip = local_ip;
|
||||||
@ -221,8 +220,8 @@ int tcpsvd_main(int argc, char **argv)
|
|||||||
if (max_per_host)
|
if (max_per_host)
|
||||||
ipsvd_perhost_init(cmax);
|
ipsvd_perhost_init(cmax);
|
||||||
|
|
||||||
port = bb_lookup_port(argv[1], "tcp", 0);
|
local_port = bb_lookup_port(argv[1], "tcp", 0);
|
||||||
sock = create_and_bind_stream_or_die(argv[0], port);
|
sock = create_and_bind_stream_or_die(argv[0], local_port);
|
||||||
xlisten(sock, backlog);
|
xlisten(sock, backlog);
|
||||||
/* ndelay_off(sock); - it is the default I think? */
|
/* ndelay_off(sock); - it is the default I think? */
|
||||||
|
|
||||||
@ -238,7 +237,7 @@ int tcpsvd_main(int argc, char **argv)
|
|||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
/* we do it only for ":port" cosmetics... oh well */
|
/* we do it only for ":port" cosmetics... oh well */
|
||||||
len_and_sockaddr *lsa = xhost2sockaddr(argv[0], port);
|
len_and_sockaddr *lsa = xhost2sockaddr(argv[0], local_port);
|
||||||
char *addr = xmalloc_sockaddr2dotted(&lsa->sa, lsa->len);
|
char *addr = xmalloc_sockaddr2dotted(&lsa->sa, lsa->len);
|
||||||
|
|
||||||
printf("%s: info: listening on %s", applet_name, addr);
|
printf("%s: info: listening on %s", applet_name, addr);
|
||||||
@ -246,7 +245,7 @@ int tcpsvd_main(int argc, char **argv)
|
|||||||
#ifndef SSLSVD
|
#ifndef SSLSVD
|
||||||
if (option_mask32 & OPT_u)
|
if (option_mask32 & OPT_u)
|
||||||
printf(", uid %u, gid %u",
|
printf(", uid %u, gid %u",
|
||||||
(unsigned)ugid.uid, (unsigned)ugid.uid);
|
(unsigned)ugid.uid, (unsigned)ugid.gid);
|
||||||
#endif
|
#endif
|
||||||
puts(", starting");
|
puts(", starting");
|
||||||
}
|
}
|
||||||
@ -356,7 +355,7 @@ int tcpsvd_main(int argc, char **argv)
|
|||||||
sockadr_size = sizeof(sock_adr);
|
sockadr_size = sizeof(sock_adr);
|
||||||
if (getsockopt(conn, SOL_IP, SO_ORIGINAL_DST, &sock_adr.sa, &sockadr_size) == 0) {
|
if (getsockopt(conn, SOL_IP, SO_ORIGINAL_DST, &sock_adr.sa, &sockadr_size) == 0) {
|
||||||
char *ip = xmalloc_sockaddr2dotted_noport(&sock_adr.sa, sockadr_size);
|
char *ip = xmalloc_sockaddr2dotted_noport(&sock_adr.sa, sockadr_size);
|
||||||
port = get_nport(&sock_adr.sa);
|
unsigned port = get_nport(&sock_adr.sa);
|
||||||
port = ntohs(port);
|
port = ntohs(port);
|
||||||
xsetenv("TCPORIGDSTIP", ip);
|
xsetenv("TCPORIGDSTIP", ip);
|
||||||
xsetenv("TCPORIGDSTPORT", utoa(port));
|
xsetenv("TCPORIGDSTPORT", utoa(port));
|
||||||
|
Loading…
Reference in New Issue
Block a user