Merge lp:~genged/ubuntu/oneiric/netcat-openbsd/dccp-support into lp:ubuntu/oneiric/netcat-openbsd

Proposed by Michael Gendelman
Status: Merged
Merge reported by: Chuck Short
Merged at revision: not available
Proposed branch: lp:~genged/ubuntu/oneiric/netcat-openbsd/dccp-support
Merge into: lp:ubuntu/oneiric/netcat-openbsd
Diff against target: 218 lines (+198/-0)
3 files modified
debian/changelog (+6/-0)
debian/patches/dccp.patch (+191/-0)
debian/patches/series (+1/-0)
To merge this branch: bzr merge lp:~genged/ubuntu/oneiric/netcat-openbsd/dccp-support
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+64303@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/changelog'
--- debian/changelog 2011-01-04 14:31:12 +0000
+++ debian/changelog 2011-06-11 14:47:23 +0000
@@ -1,3 +1,9 @@
1netcat-openbsd (1.89-3ubuntu6) oneiric; urgency=low
2
3 * debian/patches/dccp.patch: Added support for dccp
4
5 -- Michael Gendelman <genged@gmail.com> Sat, 11 Jun 2011 01:09:57 +0300
6
1netcat-openbsd (1.89-3ubuntu5) natty; urgency=low7netcat-openbsd (1.89-3ubuntu5) natty; urgency=low
28
3 * debian/patches/quit-timer.patch: Re-enabled, but set default to 0 to match 9 * debian/patches/quit-timer.patch: Re-enabled, but set default to 0 to match
410
=== added file 'debian/patches/dccp.patch'
--- debian/patches/dccp.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/dccp.patch 2011-06-11 14:47:23 +0000
@@ -0,0 +1,191 @@
1Index: netcat-openbsd-oneiric/netcat.c
2===================================================================
3--- netcat-openbsd-oneiric.orig/netcat.c 2011-06-10 22:29:16.371916860 +0300
4+++ netcat-openbsd-oneiric/netcat.c 2011-06-10 22:29:16.371916860 +0300
5@@ -88,6 +88,7 @@
6 char *sflag; /* Source Address */
7 int tflag; /* Telnet Emulation */
8 int uflag; /* UDP - Default to TCP */
9+int dccpflag; /* DCCP - Default to TCP */
10 int vflag; /* Verbosity */
11 int xflag; /* Socks proxy */
12 int zflag; /* Port Scan Flag */
13@@ -113,6 +114,7 @@
14 void set_common_sockopts(int);
15 int parse_iptos(char *);
16 void usage(int);
17+char *proto_name(int uflag, int dccpflag);
18
19 static int connect_with_timeout(int fd, const struct sockaddr *sa,
20 socklen_t salen, int ctimeout);
21@@ -140,7 +142,7 @@
22 sv = NULL;
23
24 while ((ch = getopt(argc, argv,
25- "46Ddhi:jklnP:p:q:rSs:tT:Uuvw:X:x:zC")) != -1) {
26+ "46Ddhi:jklnP:p:q:rSs:tT:UuZvw:X:x:zC")) != -1) {
27 switch (ch) {
28 case '4':
29 family = AF_INET;
30@@ -205,6 +207,9 @@
31 case 'u':
32 uflag = 1;
33 break;
34+ case 'Z':
35+ dccpflag = 1;
36+ break;
37 case 'v':
38 vflag = 1;
39 break;
40@@ -247,6 +252,9 @@
41 if (argv[0] && !argv[1] && family == AF_UNIX) {
42 if (uflag)
43 errx(1, "cannot use -u and -U");
44+ if (dccpflag)
45+ errx(1, "cannot use -C and -U");
46+
47 host = argv[0];
48 uport = NULL;
49 } else if (argv[0] && !argv[1]) {
50@@ -273,8 +281,18 @@
51 if (family != AF_UNIX) {
52 memset(&hints, 0, sizeof(struct addrinfo));
53 hints.ai_family = family;
54- hints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM;
55- hints.ai_protocol = uflag ? IPPROTO_UDP : IPPROTO_TCP;
56+ if (uflag) {
57+ hints.ai_socktype = SOCK_DGRAM;
58+ hints.ai_protocol = IPPROTO_UDP;
59+ }
60+ else if (dccpflag) {
61+ hints.ai_socktype = SOCK_DCCP;
62+ hints.ai_protocol = IPPROTO_DCCP;
63+ }
64+ else {
65+ hints.ai_socktype = SOCK_STREAM;
66+ hints.ai_protocol = IPPROTO_TCP;
67+ }
68 if (nflag)
69 hints.ai_flags |= AI_NUMERICHOST;
70 }
71@@ -283,6 +301,9 @@
72 if (uflag)
73 errx(1, "no proxy support for UDP mode");
74
75+ if (dccpflag)
76+ errx(1, "no proxy support for DCCP mode");
77+
78 if (lflag)
79 errx(1, "no proxy support for listen");
80
81@@ -348,17 +369,19 @@
82 }
83
84 if(vflag) {
85+ char *proto = proto_name(uflag, dccpflag);
86+
87 /* Don't look up port if -n. */
88 if (nflag)
89 sv = NULL;
90 else
91 sv = getservbyport(ntohs(atoi(uport)),
92- uflag ? "udp" : "tcp");
93+ proto);
94
95 fprintf(stderr, "Connection from %s port %s [%s/%s] accepted\n",
96 inet_ntoa(((struct sockaddr_in *)(&cliaddr))->sin_addr),
97 uport,
98- uflag ? "udp" : "tcp",
99+ proto,
100 sv ? sv->s_name : "*");
101 }
102
103@@ -503,6 +526,22 @@
104 return (s);
105 }
106
107+char *proto_name(uflag, dccpflag) {
108+
109+ char *proto = NULL;
110+ if (uflag) {
111+ proto = "udp";
112+ }
113+ else if (dccpflag) {
114+ proto = "dccp";
115+ }
116+ else {
117+ proto = "tcp";
118+ }
119+
120+ return proto;
121+}
122+
123 /*
124 * remote_connect()
125 * Returns a socket connected to a remote host. Properly binds to a local
126@@ -529,8 +568,19 @@
127
128 memset(&ahints, 0, sizeof(struct addrinfo));
129 ahints.ai_family = res0->ai_family;
130- ahints.ai_socktype = uflag ? SOCK_DGRAM : SOCK_STREAM;
131- ahints.ai_protocol = uflag ? IPPROTO_UDP : IPPROTO_TCP;
132+ if (uflag) {
133+ ahints.ai_socktype = SOCK_DGRAM;
134+ ahints.ai_protocol = IPPROTO_UDP;
135+
136+ }
137+ else if (dccpflag) {
138+ ahints.ai_socktype = SOCK_DCCP;
139+ ahints.ai_protocol = IPPROTO_DCCP;
140+ }
141+ else {
142+ ahints.ai_socktype = SOCK_STREAM;
143+ ahints.ai_protocol = IPPROTO_TCP;
144+ }
145 ahints.ai_flags = AI_PASSIVE;
146 if ((error = getaddrinfo(sflag, pflag, &ahints, &ares)))
147 errx(1, "getaddrinfo: %s", gai_strerror(error));
148@@ -542,14 +592,19 @@
149 }
150
151 set_common_sockopts(s);
152- if ((error = connect_with_timeout(s, res0->ai_addr, res0->ai_addrlen, timeout)) == CONNECTION_SUCCESS)
153+ char *proto = proto_name(uflag, dccpflag);
154+
155+ if ((error = connect_with_timeout(s, res0->ai_addr, res0->ai_addrlen, timeout)) == CONNECTION_SUCCESS) {
156 break;
157- else if (vflag && error == CONNECTION_FAILED)
158+ }
159+ else if (vflag && error == CONNECTION_FAILED) {
160 warn("connect to %s port %s (%s) failed", host, port,
161- uflag ? "udp" : "tcp");
162- else if (vflag && error == CONNECTION_TIMEOUT)
163+ proto);
164+ }
165+ else if (vflag && error == CONNECTION_TIMEOUT) {
166 warn("connect to %s port %s (%s) timed out", host, port,
167- uflag ? "udp" : "tcp");
168+ proto);
169+ }
170
171 close(s);
172 s = -1;
173@@ -817,8 +872,8 @@
174 char *n, *endp;
175 int hi, lo, cp;
176 int x = 0;
177-
178- sv = getservbyname(p, uflag ? "udp" : "tcp");
179+ char *proto = proto_name(uflag, dccpflag);
180+ sv = getservbyname(p, proto);
181 if (sv) {
182 portlist[0] = calloc(1, PORT_MAX_LEN);
183 if (portlist[0] == NULL)
184@@ -979,6 +1034,7 @@
185 \t-t Answer TELNET negotiation\n\
186 \t-U Use UNIX domain socket\n\
187 \t-u UDP mode\n\
188+ \t-Z DCCP mode\n\
189 \t-v Verbose\n\
190 \t-w secs\t Timeout for connects and final net reads\n\
191 \t-X proto Proxy protocol: \"4\", \"5\" (SOCKS) or \"connect\"\n\
0192
=== modified file 'debian/patches/series'
--- debian/patches/series 2011-01-04 14:31:12 +0000
+++ debian/patches/series 2011-06-11 14:47:23 +0000
@@ -15,3 +15,4 @@
15gcc-warnings.patch15gcc-warnings.patch
16verbose-message-to-stderr.patch16verbose-message-to-stderr.patch
17netcat-info.patch17netcat-info.patch
18dccp.patch

Subscribers

People subscribed via source and target branches