[PATCH v2] nc_bloaty: support udp broadcast ports

Norbert Lange nolange79 at gmail.com
Fri Feb 14 21:13:38 UTC 2020


Add a -b option, identical to debians "tradional" netcat.
This allows sending (subnet) UDP Broadcasts.

Signed-off-by: Norbert Lange <nolange79 at gmail.com>
---
 networking/nc_bloaty.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/networking/nc_bloaty.c b/networking/nc_bloaty.c
index 034e03d21..88eda6b28 100644
--- a/networking/nc_bloaty.c
+++ b/networking/nc_bloaty.c
@@ -84,6 +84,7 @@
 //usage:	)
 //usage:     "\n	-n	Don't do DNS resolution"
 //usage:     "\n	-u	UDP mode"
+//usage:     "\n	-b	Allow broadcasts"
 //usage:     "\n	-v	Verbose"
 //usage:	IF_NC_EXTRA(
 //usage:     "\n	-o FILE	Hex dump traffic"
@@ -171,17 +172,19 @@ enum {
 	OPT_p = (1 << 1),
 	OPT_s = (1 << 2),
 	OPT_u = (1 << 3),
-	OPT_v = (1 << 4),
-	OPT_w = (1 << 5),
-	OPT_l = (1 << 6) * ENABLE_NC_SERVER,
-	OPT_k = (1 << 7) * ENABLE_NC_SERVER,
-	OPT_i = (1 << (6+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
-	OPT_o = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
-	OPT_z = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+	OPT_b = (1 << 4),
+	OPT_v = (1 << 5),
+	OPT_w = (1 << 6),
+	OPT_l = (1 << 7) * ENABLE_NC_SERVER,
+	OPT_k = (1 << 8) * ENABLE_NC_SERVER,
+	OPT_i = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+	OPT_o = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
+	OPT_z = (1 << (9+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA,
 };
 
 #define o_nflag   (option_mask32 & OPT_n)
 #define o_udpmode (option_mask32 & OPT_u)
+#define o_bcmode  (option_mask32 & OPT_b)
 #if ENABLE_NC_EXTRA
 #define o_ofile   (option_mask32 & OPT_o)
 #define o_zero    (option_mask32 & OPT_z)
@@ -788,7 +791,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
 
 	// -g -G -t -r deleted, unimplemented -a deleted too
 	getopt32(argv, "^"
-		"np:s:uvw:+"/* -w N */ IF_NC_SERVER("lk")
+		"np:s:ubvw:+"/* -w N */ IF_NC_SERVER("lk")
 		IF_NC_EXTRA("i:o:z")
 			"\0"
 			"?2:vv"IF_NC_SERVER(":ll"), /* max 2 params; -v and -l are counters */
@@ -851,8 +854,11 @@ int nc_main(int argc UNUSED_PARAM, char **argv)
 	}
 	xmove_fd(x, netfd);
 	setsockopt_reuseaddr(netfd);
-	if (o_udpmode)
+	if (o_udpmode) {
+		if (o_bcmode)
+			setsockopt_broadcast(netfd);
 		socket_want_pktinfo(netfd);
+	}
 	if (!ENABLE_FEATURE_UNIX_LOCAL
 	 || cnt_l != 0 /* listen */
 	 || ouraddr->u.sa.sa_family != AF_UNIX
-- 
2.25.0



More information about the busybox mailing list