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

Signed-off-by: Norbert Lange <[email protected]>
---
 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

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to