d6f10ff5bf
- Remove patch verbose-numeric-port.patch - Refresh patches: * broadcast-support.patch * build-without-TLS-support.patch * connect-timeout.patch * dccp-support.patch * destination-port-list.patch * get-sev-by-name.patch * misc-failures-and-features.patch * port-to-linux-with-libsd.patch * quit-timer.patch * send-crlf.patch * serialized-handling-multiple-clients.patch * set-TCP-MD5SIG-correctly-for-client-connections.patch * udp-scan-timeout.patch * use-flags-to-specify-listen-address.patch OBS-URL: https://build.opensuse.org/package/show/network:utilities/netcat-openbsd?expand=0&rev=20
90 lines
2.4 KiB
Diff
90 lines
2.4 KiB
Diff
From: Aron Xu <aron@debian.org>
|
|
Date: Mon, 13 Feb 2012 19:06:52 +0800
|
|
Subject: broadcast support
|
|
|
|
---
|
|
nc.1 | 4 +++-
|
|
netcat.c | 22 ++++++++++++++++++++--
|
|
2 files changed, 23 insertions(+), 3 deletions(-)
|
|
|
|
--- a/nc.1
|
|
+++ b/nc.1
|
|
@@ -33,7 +33,7 @@
|
|
.Nd arbitrary TCP and UDP connections and listens
|
|
.Sh SYNOPSIS
|
|
.Nm nc
|
|
-.Op Fl 46CDdFhklNnrStUuvZz
|
|
+.Op Fl 46bCDdFhklNnrStUuvZz
|
|
.Op Fl I Ar length
|
|
.Op Fl i Ar interval
|
|
.Op Fl M Ar ttl
|
|
@@ -93,6 +93,8 @@ The options are as follows:
|
|
Use IPv4 addresses only.
|
|
.It Fl 6
|
|
Use IPv6 addresses only.
|
|
+.It Fl b
|
|
+Allow broadcast.
|
|
.It Fl C
|
|
Send CRLF as line-ending. Each line feed (LF) character from the input
|
|
data is translated into CR+LF before being written to the socket. Line
|
|
--- a/netcat.c
|
|
+++ b/netcat.c
|
|
@@ -132,6 +132,7 @@
|
|
#define UDP_SCAN_TIMEOUT 3 /* Seconds */
|
|
|
|
/* Command Line Options */
|
|
+int bflag; /* Allow Broadcast */
|
|
int dflag; /* detached, no stdin */
|
|
int Fflag; /* fdpass sock to stdout */
|
|
unsigned int iflag; /* Interval Flag */
|
|
@@ -263,9 +264,9 @@ main(int argc, char *argv[])
|
|
|
|
while ((ch = getopt(argc, argv,
|
|
# if defined(TLS)
|
|
- "46C:cDde:FH:hI:i:K:klM:m:NnO:o:P:p:q:R:rSs:T:tUuV:vW:w:X:x:Z:z"))
|
|
+ "46bC:cDde:FH:hI:i:K:klM:m:NnO:o:P:p:q:R:rSs:T:tUuV:vW:w:X:x:Z:z"))
|
|
# else
|
|
- "46CDdFhI:i:klM:m:NnO:P:p:q:rSs:T:tUuV:vW:w:X:x:Zz"))
|
|
+ "46bCDdFhI:i:klM:m:NnO:P:p:q:rSs:T:tUuV:vW:w:X:x:Zz"))
|
|
# endif
|
|
!= -1) {
|
|
switch (ch) {
|
|
@@ -275,6 +276,13 @@ main(int argc, char *argv[])
|
|
case '6':
|
|
family = AF_INET6;
|
|
break;
|
|
+ case 'b':
|
|
+# if defined(SO_BROADCAST)
|
|
+ bflag = 1;
|
|
+# else
|
|
+ errx(1, "no broadcast frame support available");
|
|
+# endif
|
|
+ break;
|
|
case 'U':
|
|
family = AF_UNIX;
|
|
break;
|
|
@@ -1852,6 +1860,15 @@ set_common_sockopts(int s, int af)
|
|
{
|
|
int x = 1;
|
|
|
|
+# if defined(SO_BROADCAST)
|
|
+ if (bflag) {
|
|
+ /* allow datagram sockets to send packets to a broadcast address
|
|
+ * (this option has no effect on stream-oriented sockets) */
|
|
+ if (setsockopt(s, SOL_SOCKET, SO_BROADCAST,
|
|
+ &x, sizeof(x)) == -1)
|
|
+ err(1, NULL);
|
|
+ }
|
|
+# endif
|
|
# if defined(TCP_MD5SIG)
|
|
if (Sflag) {
|
|
if (setsockopt(s, IPPROTO_TCP, TCP_MD5SIG,
|
|
@@ -2127,6 +2144,7 @@ help(void)
|
|
fprintf(stderr, "\tCommand Summary:\n\
|
|
\t-4 Use IPv4\n\
|
|
\t-6 Use IPv6\n\
|
|
+ \t-b Allow broadcast\n\
|
|
\t-C Send CRLF as line-ending\n\
|
|
\t-D Enable the debug socket option\n\
|
|
\t-d Detach from stdin\n\
|