diff options
Diffstat (limited to 'openbsd-compat/port-net.c')
-rw-r--r-- | openbsd-compat/port-net.c | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/openbsd-compat/port-net.c b/openbsd-compat/port-net.c index d384b1454..f6e32ad49 100644 --- a/openbsd-compat/port-net.c +++ b/openbsd-compat/port-net.c | |||
@@ -41,7 +41,44 @@ | |||
41 | * including tun/tap forwarding and routing domains. | 41 | * including tun/tap forwarding and routing domains. |
42 | */ | 42 | */ |
43 | 43 | ||
44 | #if defined(SYS_RDOMAIN_XXX) | 44 | #if defined(SYS_RDOMAIN_LINUX) || defined(SSH_TUN_LINUX) |
45 | #include <linux/if.h> | ||
46 | #endif | ||
47 | |||
48 | #if defined(SYS_RDOMAIN_LINUX) | ||
49 | char * | ||
50 | sys_get_rdomain(int fd) | ||
51 | { | ||
52 | char dev[IFNAMSIZ + 1]; | ||
53 | socklen_t len = sizeof(dev) - 1; | ||
54 | |||
55 | if (getsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, dev, &len) == -1) { | ||
56 | error("%s: cannot determine VRF for fd=%d : %s", | ||
57 | __func__, fd, strerror(errno)); | ||
58 | return NULL; | ||
59 | } | ||
60 | dev[len] = '\0'; | ||
61 | return strdup(dev); | ||
62 | } | ||
63 | |||
64 | int | ||
65 | sys_set_rdomain(int fd, const char *name) | ||
66 | { | ||
67 | if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, | ||
68 | name, strlen(name)) == -1) { | ||
69 | error("%s: setsockopt(%d, SO_BINDTODEVICE, %s): %s", | ||
70 | __func__, fd, name, strerror(errno)); | ||
71 | return -1; | ||
72 | } | ||
73 | return 0; | ||
74 | } | ||
75 | |||
76 | int | ||
77 | valid_rdomain(const char *name) | ||
78 | { | ||
79 | return 0; | ||
80 | } | ||
81 | #elif defined(SYS_RDOMAIN_XXX) | ||
45 | /* XXX examples */ | 82 | /* XXX examples */ |
46 | char * | 83 | char * |
47 | sys_get_rdomain(int fd) | 84 | sys_get_rdomain(int fd) |
@@ -84,7 +121,6 @@ sys_set_process_rdomain(const char *name) | |||
84 | */ | 121 | */ |
85 | 122 | ||
86 | #if defined(SSH_TUN_LINUX) | 123 | #if defined(SSH_TUN_LINUX) |
87 | #include <linux/if.h> | ||
88 | #include <linux/if_tun.h> | 124 | #include <linux/if_tun.h> |
89 | 125 | ||
90 | int | 126 | int |