|
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 |
- |
|
|