diff options
author | Norbert Lange <nolange79@gmail.com> | 2020-02-14 22:13:38 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-06-29 13:53:17 +0200 |
commit | a16c8ef21253d2fbb8f311ee34514cdc0a3f49a2 (patch) | |
tree | dba4988cbc961818b6cc07b312dcd7e34df7d89f | |
parent | c918ea1673e4e930835d387bb989c620bf022e94 (diff) | |
download | busybox-w32-a16c8ef21253d2fbb8f311ee34514cdc0a3f49a2.tar.gz busybox-w32-a16c8ef21253d2fbb8f311ee34514cdc0a3f49a2.tar.bz2 busybox-w32-a16c8ef21253d2fbb8f311ee34514cdc0a3f49a2.zip |
nc_bloaty: support udp broadcast ports
Add a -b option, identical to debians "traditional" netcat.
This allows sending (subnet) UDP Broadcasts.
function old new delta
packed_usage 33420 33441 +21
nc_main 1041 1057 +16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 37/0) Total: 37 bytes
Signed-off-by: Norbert Lange <nolange79@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | networking/nc_bloaty.c | 24 |
1 files 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 @@ | |||
84 | //usage: ) | 84 | //usage: ) |
85 | //usage: "\n -n Don't do DNS resolution" | 85 | //usage: "\n -n Don't do DNS resolution" |
86 | //usage: "\n -u UDP mode" | 86 | //usage: "\n -u UDP mode" |
87 | //usage: "\n -b Allow broadcasts" | ||
87 | //usage: "\n -v Verbose" | 88 | //usage: "\n -v Verbose" |
88 | //usage: IF_NC_EXTRA( | 89 | //usage: IF_NC_EXTRA( |
89 | //usage: "\n -o FILE Hex dump traffic" | 90 | //usage: "\n -o FILE Hex dump traffic" |
@@ -171,17 +172,19 @@ enum { | |||
171 | OPT_p = (1 << 1), | 172 | OPT_p = (1 << 1), |
172 | OPT_s = (1 << 2), | 173 | OPT_s = (1 << 2), |
173 | OPT_u = (1 << 3), | 174 | OPT_u = (1 << 3), |
174 | OPT_v = (1 << 4), | 175 | OPT_b = (1 << 4), |
175 | OPT_w = (1 << 5), | 176 | OPT_v = (1 << 5), |
176 | OPT_l = (1 << 6) * ENABLE_NC_SERVER, | 177 | OPT_w = (1 << 6), |
177 | OPT_k = (1 << 7) * ENABLE_NC_SERVER, | 178 | OPT_l = (1 << 7) * ENABLE_NC_SERVER, |
178 | OPT_i = (1 << (6+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, | 179 | OPT_k = (1 << 8) * ENABLE_NC_SERVER, |
179 | OPT_o = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, | 180 | OPT_i = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, |
180 | OPT_z = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, | 181 | OPT_o = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, |
182 | OPT_z = (1 << (9+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, | ||
181 | }; | 183 | }; |
182 | 184 | ||
183 | #define o_nflag (option_mask32 & OPT_n) | 185 | #define o_nflag (option_mask32 & OPT_n) |
184 | #define o_udpmode (option_mask32 & OPT_u) | 186 | #define o_udpmode (option_mask32 & OPT_u) |
187 | #define o_bcmode (option_mask32 & OPT_b) | ||
185 | #if ENABLE_NC_EXTRA | 188 | #if ENABLE_NC_EXTRA |
186 | #define o_ofile (option_mask32 & OPT_o) | 189 | #define o_ofile (option_mask32 & OPT_o) |
187 | #define o_zero (option_mask32 & OPT_z) | 190 | #define o_zero (option_mask32 & OPT_z) |
@@ -788,7 +791,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv) | |||
788 | 791 | ||
789 | // -g -G -t -r deleted, unimplemented -a deleted too | 792 | // -g -G -t -r deleted, unimplemented -a deleted too |
790 | getopt32(argv, "^" | 793 | getopt32(argv, "^" |
791 | "np:s:uvw:+"/* -w N */ IF_NC_SERVER("lk") | 794 | "np:s:ubvw:+"/* -w N */ IF_NC_SERVER("lk") |
792 | IF_NC_EXTRA("i:o:z") | 795 | IF_NC_EXTRA("i:o:z") |
793 | "\0" | 796 | "\0" |
794 | "?2:vv"IF_NC_SERVER(":ll"), /* max 2 params; -v and -l are counters */ | 797 | "?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) | |||
851 | } | 854 | } |
852 | xmove_fd(x, netfd); | 855 | xmove_fd(x, netfd); |
853 | setsockopt_reuseaddr(netfd); | 856 | setsockopt_reuseaddr(netfd); |
854 | if (o_udpmode) | 857 | if (o_udpmode) { |
858 | if (o_bcmode) | ||
859 | setsockopt_broadcast(netfd); | ||
855 | socket_want_pktinfo(netfd); | 860 | socket_want_pktinfo(netfd); |
861 | } | ||
856 | if (!ENABLE_FEATURE_UNIX_LOCAL | 862 | if (!ENABLE_FEATURE_UNIX_LOCAL |
857 | || cnt_l != 0 /* listen */ | 863 | || cnt_l != 0 /* listen */ |
858 | || ouraddr->u.sa.sa_family != AF_UNIX | 864 | || ouraddr->u.sa.sa_family != AF_UNIX |