diff options
Diffstat (limited to 'misc.c')
-rw-r--r-- | misc.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -184,6 +184,9 @@ set_reuseaddr(int fd) | |||
184 | char * | 184 | char * |
185 | get_rdomain(int fd) | 185 | get_rdomain(int fd) |
186 | { | 186 | { |
187 | #if defined(HAVE_SYS_GET_RDOMAIN) | ||
188 | return sys_get_rdomain(fd); | ||
189 | #elif defined(__OpenBSD__) | ||
187 | int rtable; | 190 | int rtable; |
188 | char *ret; | 191 | char *ret; |
189 | socklen_t len = sizeof(rtable); | 192 | socklen_t len = sizeof(rtable); |
@@ -195,11 +198,17 @@ get_rdomain(int fd) | |||
195 | } | 198 | } |
196 | xasprintf(&ret, "%d", rtable); | 199 | xasprintf(&ret, "%d", rtable); |
197 | return ret; | 200 | return ret; |
201 | #else /* defined(__OpenBSD__) */ | ||
202 | return NULL; | ||
203 | #endif | ||
198 | } | 204 | } |
199 | 205 | ||
200 | int | 206 | int |
201 | set_rdomain(int fd, const char *name) | 207 | set_rdomain(int fd, const char *name) |
202 | { | 208 | { |
209 | #if defined(HAVE_SYS_SET_RDOMAIN) | ||
210 | return sys_set_rdomain(fd, name); | ||
211 | #elif defined(__OpenBSD__) | ||
203 | int rtable; | 212 | int rtable; |
204 | const char *errstr; | 213 | const char *errstr; |
205 | 214 | ||
@@ -219,6 +228,10 @@ set_rdomain(int fd, const char *name) | |||
219 | return -1; | 228 | return -1; |
220 | } | 229 | } |
221 | return 0; | 230 | return 0; |
231 | #else /* defined(__OpenBSD__) */ | ||
232 | error("Setting routing domain is not supported on this platform"); | ||
233 | return -1; | ||
234 | #endif | ||
222 | } | 235 | } |
223 | 236 | ||
224 | /* Characters considered whitespace in strsep calls. */ | 237 | /* Characters considered whitespace in strsep calls. */ |