View | Details | Raw Unified | Return to bug 2735 | Differences between
and this patch

Collapse All | Expand All

(-)a/openbsd-compat/port-tun.c (-7 / +5 lines)
Lines 234-249 sys_tun_infilter(struct Channel *c, char *buf, int _len) Link Here
234
	/* Prepend address family to packet using OpenBSD constants */
234
	/* Prepend address family to packet using OpenBSD constants */
235
	memcpy(rbuf + 4, buf, len);
235
	memcpy(rbuf + 4, buf, len);
236
	len += 4;
236
	len += 4;
237
	POKE_U32(rbuf, htonl(af));
237
	POKE_U32(rbuf, af);
238
	ptr = rbuf;
238
	ptr = rbuf;
239
#elif defined(SSH_TUN_COMPAT_AF)
239
#elif defined(SSH_TUN_COMPAT_AF)
240
	/* Convert existing address family header to OpenBSD value */
240
	/* Convert existing address family header to OpenBSD value */
241
	if (len <= 4)
241
	if (len <= 4)
242
		return -1;
242
		return -1;
243
	af = ntohl(PEEK_U32(buf));
243
	af = PEEK_U32(buf);
244
	/* Put it back */
244
	/* Put it back */
245
	POKE_U32(buf, htonl(af == AF_INET6 ?
245
	POKE_U32(buf, af == AF_INET6 ? OPENBSD_AF_INET6 : OPENBSD_AF_INET);
246
	    OPENBSD_AF_INET6 : OPENBSD_AF_INET));
247
#endif
246
#endif
248
247
249
	if ((r = sshbuf_put_string(&c->input, ptr, len)) != 0)
248
	if ((r = sshbuf_put_string(&c->input, ptr, len)) != 0)
Lines 274-281 sys_tun_outfilter(struct Channel *c, u_char **data, u_int *dlen) Link Here
274
	buf = *data + sizeof(af);
273
	buf = *data + sizeof(af);
275
#elif defined(SSH_TUN_COMPAT_AF)
274
#elif defined(SSH_TUN_COMPAT_AF)
276
	/* translate address family */
275
	/* translate address family */
277
	af = (ntohl(PEEK_U32(buf)) == OPENBSD_AF_INET6) ? AF_INET6 : AF_INET;
276
	af = (PEEK_U32(buf) == OPENBSD_AF_INET6) ? AF_INET6 : AF_INET;
278
	POKE_U32(buf, htonl(af));
277
	POKE_U32(buf, af);
279
#endif
278
#endif
280
	return (buf);
279
	return (buf);
281
}
280
}
282
- 

Return to bug 2735