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