|
Lines 631-640
Link Here
|
| 631 |
} |
631 |
} |
| 632 |
|
632 |
|
| 633 |
int |
633 |
int |
| 634 |
tun_open(int tun, int mode) |
634 |
tun_open(int tun, int mode, uid_t uid) |
| 635 |
{ |
635 |
{ |
| 636 |
#if defined(CUSTOM_SYS_TUN_OPEN) |
636 |
#if defined(CUSTOM_SYS_TUN_OPEN) |
| 637 |
return (sys_tun_open(tun, mode)); |
637 |
return (sys_tun_open(tun, mode, uid)); |
| 638 |
#elif defined(SSH_TUN_OPENBSD) |
638 |
#elif defined(SSH_TUN_OPENBSD) |
| 639 |
struct ifreq ifr; |
639 |
struct ifreq ifr; |
| 640 |
char name[100]; |
640 |
char name[100]; |
|
Lines 679-684
Link Here
|
| 679 |
if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) |
679 |
if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) |
| 680 |
goto failed; |
680 |
goto failed; |
| 681 |
|
681 |
|
|
|
682 |
/* Set interface owner */ |
| 683 |
/* XXX: This is most definitely wrong and is considered a stub :) */ |
| 684 |
if (ioctl(fd, TUNSETOWNER, uid) == -1) |
| 685 |
goto failed; |
| 686 |
|
| 682 |
/* Bring interface up */ |
687 |
/* Bring interface up */ |
| 683 |
ifr.ifr_flags |= IFF_UP; |
688 |
ifr.ifr_flags |= IFF_UP; |
| 684 |
if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) |
689 |
if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) |